Я сохраняю много информации в plist. Это по стандарту в моем mainBundle.
это мой метод загрузки пути и данных из plist. если файл в папке «поддержка приложений» не существует, я копирую его из mainBundle туда.
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
self.plistPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.plist",plistName]];
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath: self.plistPath])
{
NSString *pathInBundle = [[NSBundle mainBundle] pathForResource:plistName ofType:@"plist"];
self.plist = [NSMutableDictionary dictionaryWithContentsOfFile:pathInBundle];
NSLog(@"plist doesnt exist");
}
else {
self.plist = [NSMutableDictionary dictionaryWithContentsOfFile:self.plistPath];
NSLog(@"plist exist");
}
NSLog(@"plist path: %@",self.plistPath);
если я добавлю следующие строки в конце, будет только NO
ответ:
if([fileManager isWritableFileAtPath:self.plistPath]) NSLog(@"YES");
else NSLog(@"NO");
в конце концов, я пытался сохранить с помощью [self.plist writeToFile:self.plistPath atomically:YES];
, который также не работает.
извините, что так поздно отвечаю - у меня было много других дел. вернемся к моей проблеме: я получаю сообщение об ошибке только тогда, когда пытаюсь добавить новую запись в свой словарь (plist). редактировать не проблема. Я думаю, проблема в том, как я пытаюсь добавить запись. мой код выглядит так:
NSMutableDictionary *updateDict = [[self.plist objectForKey:@"comments"]mutableCopy];
NSMutableDictionary *tmpDict = [[[NSMutableDictionary alloc]init]autorelease];
[tmpDict setObject:comment forKey:@"comment"];
[tmpDict setObject:author forKey:@"author"];
[tmpDict setObject:car forKey:@"car"];
[tmpDict setObject:part forKey:@"part"];
[tmpDict setObject:date forKey:@"date"];
[updateDict setObject:tmpDict forKey:[NSNumber numberWithInt:[updateDict count]+1]];
[self.plist setObject:updateDict forKey:@"comments"];
if([self.plist writeToFile:self.plistPath atomically:YES]) {
return YES;
}
else {
return NO;
}
self.plist — это моя локальная копия файла в plistPath. структура моего plist выглядит так: https://img.skitch.com/20111026-tcjxp9ha4up8ggtfjy7ucgqcqe.png
надеюсь это поможет