2016-04-04 5 views
0

Пожалуйста, обратите внимание на следующий код:Невозможно записать в обычае .plist

- (IBAction)testButton:(id)sender{ 
     //create BFF with random id 
     BFF * testBff = [[BFF alloc]init]; 
     [email protected]"BFF"; 
     testBff.id= [NSNumber numberWithInt:(arc4random() % 100)]; 
     testBff.handshake=[NSDate date]; 

     //Encode the object 
     //Since a .plist doesn't take custom objects, I convert my object into type NSData* 

     NSData *encodedBFF = [NSKeyedArchiver archivedDataWithRootObject:testBff]; 

     //Insert the data into the plist and save 
     NSString *path = [documentsDirectory stringByAppendingPathComponent:@"myBFFS.plist"]; 

     [data setObject: encodedBFF forKey:testBff.id]; 
     [data writeToFile:path atomically:YES]; 
    } 

Я бы ожидать, что каждый раз, когда я нажал на кнопку, связанную с этим способом, новый объект будет добавлен myBFFs.plist проживающих в моем папке документов.

-The Путь, кажется, хорошо

-The Переменные Инспектор указывает, что «данные» NSDictionary содержит ключ со значением типа NSMutableData

Как-то, однако, ничего не записывается в файл.

Если я изменяю

[data setObject: encodedBFF forKey:testBff.id]; 

в

[data setObject: @"foo" forKey:@"bar"]; 

файл записывается. По-видимому, мои попытки кодирования не удались?

Что я здесь делаю неправильно?

+0

ОК Я это рассмотрел. Что делает этот оператор 'if (! [FileManager fileExistsAtPath: путь]) {path = (тот же, что и предыдущее значение); } 'достигают? – trojanfoe

+0

О, это только какой-то шаблонный код. См. Мой обновленный вопрос: запись в файл работает нормально, но, похоже, структура файла не принимается. Я упрощу свой вопрос, чтобы увеличить реальную проблему. – Sjakelien

+0

Как получить информацию об ошибке? – trojanfoe

ответ

0

Я решил его следующим образом: Видимо, преступник был установке ключа в этой строке:

[Данные SetObject: encodedBFF forKey: testBff.id];

, который я изменил

[myPlist SetObject: encodedBFF forKey: [testBff.id stringValue]];

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