Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 操作无法’;不可能完成。不允许操作_Iphone_Nsdata - Fatal编程技术网

Iphone 操作无法’;不可能完成。不允许操作

Iphone 操作无法’;不可能完成。不允许操作,iphone,nsdata,Iphone,Nsdata,我的iPhone应用程序出现了非常奇怪的问题。我们有一个已被批准的应用,正在应用商店销售。它包含下载一些数据库更新的功能。更新是通过HTTP以压缩方式进行的。 问题是我无法保存此下载的ZIP,因为我收到“操作无法完成。操作不允许”错误 但是:10部手机中有2部会出现这种情况。如果手机无法保存文件,则根本无法保存。如果我从应用商店重新下载应用程序,它不会改变它。但是那些能够节省时间的手机总是能够做到的。所有手机都运行相同的iOS版本,并且都是iPhone4。这真让我发疯 如果我启动XCode,一部

我的iPhone应用程序出现了非常奇怪的问题。我们有一个已被批准的应用,正在应用商店销售。它包含下载一些数据库更新的功能。更新是通过HTTP以压缩方式进行的。 问题是我无法保存此下载的ZIP,因为我收到“操作无法完成。操作不允许”错误

但是:10部手机中有2部会出现这种情况。如果手机无法保存文件,则根本无法保存。如果我从应用商店重新下载应用程序,它不会改变它。但是那些能够节省时间的手机总是能够做到的。所有手机都运行相同的iOS版本,并且都是iPhone4。这真让我发疯

如果我启动XCode,一部手机在调试时不会出错,而另一部手机会出错。他们总是给予

代码如下:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
[activeResponse release];
[theConnection release];

NSLog(@"%d", [receivedData length]);
NSString *s = [[NSString alloc] initWithData:receivedData encoding:NSASCIIStringEncoding];
NSLog(@"%@", s);
[s release];
[theRequest release];   
NSString *path = [NSString stringWithFormat:@"%@/%@", [[NSBundle mainBundle] resourcePath], @"temp.zip"];
NSLog(path);
NSError * error;
if ([receivedData writeToFile:path options:NSDataWritingAtomic error:&error])
    NSLog(@"Success");
else 
    NSLog(@"Error");
if (error)
    NSLog([error description]);

有什么想法吗?

您不允许写入应用程序包,我很惊讶它能在您的任何设备上运行。根据你的目的,你可以在不同的地方写作:

  • 如果要存储文件直到将其删除,请写入文档目录:
    [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)objectAtIndex:0]
  • 如果要允许系统在设备空间不足时删除它(并且不关心设备备份时是否保存),请使用缓存目录:
    [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES)objectAtIndex:0]
  • 如果您只是在处理时临时保存它,并将立即删除它,请使用临时目录:
    NSTemporaryDirectory()

另外,顺便说一句,使用
[directory stringByAppendingPathComponent:filename]
而不是
[NSString stringWithFormat:@“%@/%@”,directory,filename]
来构造路径可能更为简洁。

谢谢您的回复(两部分)。10部手机中有8部允许您这样做。所有在线可用的示例都使用绑定路径来保存NSData。似乎他们不应该。那么你能给我一些提示吗?如果我使用数据库(XML文件)交付我的应用程序,并且我想更新它,那么如何更新?@Teddy:使用NSFileManager的
fileExistsAtPath:
测试文件是否存在于documents目录中。如果没有,您可以从捆绑包中复制版本,或者直接从捆绑包中读取。酷。谢谢如果我用我的包发布了一个新的db版本,我必须解决这个问题。但这很容易做到。谢谢你的回复。