Я создаю NSDictionary (+ dictionaryWitContentsOfFile :), изменяю некоторые значения с помощью -setValue: ForKey: и затем, когда приложение завершается, записывает этот словарь обратно в файл с -writeToFile: автоматически.
Все прекрасно работает, пока я не открою ту же программу в другой учетной записи пользователя .
Кто-нибудь предчувствовал, что может вызвать эту ошибку?
В документации просто сказано, что -writeToFile: автоматически: возвращает НЕТ, когда некоторые из его значений не подходят для plist. Это определенно не проблема здесь.
Все, что я могу сказать на данный момент, - это то, что программа может записать файл, когда я работаю с учетной записью, из которой разрабатываю. На моем Mac есть другая учетная запись пользователя, которая не имеет прав администратора, и там -writeToFile: автоматически возвращает NO (я вижу это в консоли). Я сделал эту учетную запись администратором, но программа по-прежнему не может сохранить там.
Спасибо за любую помощь,
Wolfgang
PS: я думаю, что не могу дать вам больше информации, которая не является избыточной. Если вы хотите еще немного в ваших руках, вот код:
- (void)awakeFromNib
{
NSString *path = [NSString stringWithFormat:@"%@/%@.plist",[[NSBundle mainBundle] resourcePath],NSUserName()];
if (![[NSFileManager defaultManager] fileExistsAtPath:path])
{
NSLog(@"create new plist");
path = [[NSBundle mainBundle] pathForResource:@"DefaultAppData" ofType:@"plist"];
}
NSLog(@"open path:%@", path);
myPlist = [NSDictionary dictionaryWithContentsOfFile:path];
}
-(void)changeSomething
{
[myPlist setValue:[NSNumber numberWithBool:NO]] forKey:@"aKey"];
}
-(void)applicationWillTerminate:(NSNotification*)notification
{
NSLog(@"dict: %@",myPlist);
NSString *path = [NSString stringWithFormat:@"%@/%@.plist",[[NSBundle mainBundle] resourcePath],NSUserName()];
NSLog(@"save at path:%@ successful:%d", path, [myPlist writeToFile:path atomically:YES]);
}