【问题标题】:The operation couldn’t be completed. Operation not permitted操作无法完成。不允许操作
【发布时间】:2011-04-08 20:08:55
【问题描述】:

我的 iPhone 应用程序出现非常奇怪的问题。我们有一款 App 已获批准并在 App Store 上销售。它包含下载一些数据库更新的功能。更新通过 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]);

有什么想法吗?

【问题讨论】:

    标签: iphone nsdata


    【解决方案1】:

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

    • 如果你想保存文件直到你删除它,写入文件目录:[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: 来测试文件是否存在于文档目录中。如果没有,您可以从包中复制版本,或者直接从包中读取它。
    • 酷。谢谢。如果我用我的包发布一个新的数据库版本,我必须解决这个问题。但这很容易做到。感谢您的回复。
    猜你喜欢
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-27
    • 1970-01-01
    • 2012-01-03
    • 2021-02-10
    • 2021-01-01
    相关资源
    最近更新 更多