我的 iPhone 应用程序出现了非常奇怪的问题。我们有一个应用程序已获得批准并在应用程序商店销售。它包含下载一些数据库更新的功能。该更新通过 HTTP 以 ZIP 形式提供。
问题是我无法保存这个下载的 ZIP,因为我收到“操作无法完成。操作不允许”错误。
但是:十部手机中有两部会发生这种情况。如果一部手机无法保存文件,则它根本无法保存文件。如果我从商店重新下载应用程序,它不会改变它。但那些能够保存 ZIP 的手机总是有能力的。所有手机都运行相同的 iOS 版本,而且都是 iPhone 4。这真让我抓狂。
如果我启动 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]
构建路径。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)