出现以下错误:
CGDataConsumerCreateWithFilename: failed to open `/name' for writing: Permission denied.
使用此代码(不是我的):
- (void)createPDFWithName
{
//NSURL * newFilePath = [[NSURL alloc] initFileURLWithPath:name];
NSString * newFilePath = @"name";
CGRect page = CGRectMake(0, 0, 300, 300);
NSDictionary * metaData = nil;
if (!UIGraphicsBeginPDFContextToFile(newFilePath, page, metaData )) {
NSLog(@"error creating PDF context");
return;
}
UIGraphicsBeginPDFPage();
[self.tableView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIGraphicsEndPDFContext();
}
那么:我应该在哪里存储这个PDF文件?我尝试了NSBundle MainBundle
这件事,但它也没有用。
谢谢!
答案 0 :(得分:3)
您应该阅读文件系统上可以创建文件的各个位置。其中一个是文档路径,下面是一个例子。
- (NSString *)documentPath {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentPath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
return documentPath;
}
NSString * newFilePath = [[self documentPath] stringByAppendingPathComponent:@"name.pdf"];
答案 1 :(得分:2)
扩展Alex的回答
文档目录是您应该考虑存储PDF的唯一位置。它是唯一的文档存储,Apple保证应用程序创建的内容的持久性,并将在升级之间保持等等。
你不能将东西推入你的MainBundle,因为捆绑在你的应用程序的整个生命周期中保持不变