我在写入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];
}
}];
}
答案 0 :(得分:2)
您是否考虑过写入应用文档目录?我认为您不应该写入应用程序包,只能从中读取。
NSString *documentsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *filePath = [documentsDir stringByAppendingPathComponent:doc.contentStreamFileName];
答案 1 :(得分:2)
您不应该尝试在应用程序的bundle目录中编写。
如果文件是由应用程序生成和使用的,则应该使用NSApplicationSupport目录;如果希望文件对用户可见,则应该使用NSApplicationDocuments目录。
它不是绝对必要的,但通常的做法是为文件创建一个子目录。你可以使用NSFileManager的createDirectory ...方法。