Где хранить созданный файл PDF? - PullRequest
1 голос
/ 14 декабря 2011

Получена следующая ошибка:

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, и она тоже не сработала.

Спасибо!

Ответы [ 2 ]

3 голосов
/ 14 декабря 2011

Вы должны прочитать о различных местах в файловой системе, где вы можете создавать файлы. Одним из них является путь к документам, пример ниже.

- (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"];
2 голосов
/ 14 декабря 2011

Расширяя ответ Алекса

Каталог документов - это ЕДИНСТВЕННОЕ место, где вы должны подумать о сохранении своего PDF. Это единственное хранилище документов, которое Apple гарантирует постоянство вещей, которые создает ваше приложение, и будет сохраняться между обновлениями и т. Д.

Вы не можете загружать вещи в свой MainBundle, так как пакет остается неизменным на протяжении всей жизни вашего приложения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...