2012-05-30 2 views
0

Я пытаюсь запустить образец кода, и у меня возникли проблемы с созданием и сохранением файла.Проблема Создание и сохранение файла в Xcode

Вот мой код:

-(IBAction) example 
{ 
    NSFileManager *fm = [[NSFileManager alloc] init]; 
    NSURL *docsurl = [fm URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:YES error:nil]; 
    myfolder = [docsurl URLByAppendingPathComponent:@"MyFolder"]; 
    NSError * err = nil; 
    BOOL ok = [fm createDirectoryAtURL:myfolder withIntermediateDirectories:YES attributes:nil error:&err]; 
    ok = [label.text writeToURL:myfolder atomically:YES encoding:NSUTF8StringEncoding error:nil];  
} 

-(IBAction) load 
{ 
    label2.text = [[NSString alloc] initWithContentsOfURL:myfolder 
    encoding:NSUTF8StringEncoding error:nil]; 
} 

Я хочу, чтобы сохранить текст первого лейбла в файл, когда я нажимаю на первую кнопку. Когда я нажимаю вторую кнопку, я хочу, чтобы она прочитала то, что находится в файле, и сделайте второй текст ярлыка. Однако, когда я нажимаю вторую кнопку, вторая метка просто пуста. Любые предложения?

+0

Возможно, вы не проверяете результат какого-либо из методов, которые вы вызываете. Кто-нибудь из них преуспевает? Какая ценность 'ok'? «Docsurl» заканчивается косой чертой? Вам нужно добавить один из них до добавления MyFolder? – user1118321

ответ

0

Я предлагаю на самом деле использовать те объекты NSError. Я также предлагаю использовать NSFileManager по умолчанию.

-(IBAction) example 
{ 
    NSFileManager *fm = [NSFileManager defaultManager]; 
    NSError *error; 
    NSURL *docsurl = [fm URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:YES error:&error]; 
    myfolder = [docsurl URLByAppendingPathComponent:@"MyFolder"]; 
    NSError * err = nil; 

    if ([fm createDirectoryAtURL:myfolder withIntermediateDirectories:YES attributes:nil error:&err]) { 
     if ([label.text writeToURL:myfolder atomically:YES encoding:NSUTF8StringEncoding error:&err]) { 

     } 
     else { 
      NSLog(@"%@", err); 
     } 
    } 
    else { 
     NSLog(@"%@", err); 
    } 


} 

-(IBAction) load 
{ 
    NSError *err; 
    if ([[NSString alloc] initWithContentsOfURL:myfolder 
    encoding:NSUTF8StringEncoding error:&err]) { 
     label2.text = [[NSString alloc] initWithContentsOfURL:myfolder 
    encoding:NSUTF8StringEncoding error:nil]; 
    } 
    else { 
     NSLog(@"%@", err); 
    } 
} 

Этот код не будет работать, как есть, но она напечатает бы то ни было ошибки вы сталкиваетесь, которые должны помочь вам решить эту проблему.

+0

Я попытался запустить ваш код и вывод, который я получаю, когда я нажимаю кнопку примера: 2012-05-31 17: 53: 05.927 example [3068: 10703] Ошибка домена = NSCocoaErrorDomain Code = 512 «Операция не может быть завершена . (Ошибка какао 512.) «UserInfo = 0x7549230 {NSFilePath =/Пользователи/rawsonhunter/Библиотека/Поддержка приложений/Симулятор iPhone/5.0/Приложения/2E92DC0F-94F0-41ED-AE47-0A2EB7FAE2DF/Documents/MyFolder, NSUnderlyingError = 0x7548ce0" операция не может быть завершена. Является ли каталог "} –

+0

Хорошо, это имеет смысл. Он говорит, что вы пытаетесь записать в каталог. Взгляните на код. Сначала создайте папку с URL-адресом myfolder. Затем вы пытаетесь записать файл на тот же URL. Вы должны создать новый URL-адрес, который представляет файл. – sosborn

Смежные вопросы