在ios中写入文件时出错代码516

时间:2013-04-02 19:23:43

标签: iphone objective-c ipad file-io

我在写入iPad中的文件时遇到此错误。但是相同的应用程序在模拟器中工作正常。我在这里附上代码。

    NSString *filepath = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:doc.contentStreamFileName];
                         NSFileManager *fMngr = [NSFileManager defaultManager];
                         if ([fMngr fileExistsAtPath:filepath]) {
                             NSLog(@"File already available");
                             CMISExtensionElement *elem = [doc.properties.extensions objectAtIndex:0];
                             NSString *description = [self crop:elem.description];
                             [self loadImage:doc.contentStreamFileName desc:description];
                         }
                         else{
                             [doc downloadContentToFile:filepath completionBlock:^(NSError *error){
                                 if (nil == error) {
                                     NSLog(@"successful");
                                 }
                                 else
                                 {
                                     UIAlertView* alert = [[UIAlertView alloc]initWithTitle:@"Error retriving content" message:[NSString stringWithFormat:@"Error code: %d",error.code] delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
                                     [alert show];

                                 }
                             }progressBlock:^(unsigned long long bytesDownloaded, unsigned long long bytesTotal){
                                 if (bytesTotal == bytesDownloaded) {
                                     CMISExtensionElement *elem = [doc.properties.extensions objectAtIndex:0];
                                     NSString *description = [self crop:elem.description];
                                     [self loadImage:doc.contentStreamFileName desc:description];
                                 }
                             }];
                         }

2 个答案:

答案 0 :(得分:2)

您是否考虑过写入应用文档目录?我认为您不应该写入应用程序包,只能从中读取。

NSString *documentsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *filePath = [documentsDir stringByAppendingPathComponent:doc.contentStreamFileName];

答案 1 :(得分:2)

您不应该尝试在应用程序的bundle目录中编写。

如果文件是由应用程序生成和使用的,则应该使用NSApplicationSupport目录;如果希望文件对用户可见,则应该使用NSApplicationDocuments目录。

它不是绝对必要的,但通常的做法是为文件创建一个子目录。你可以使用NSFileManager的createDirectory ...方法。