Итак, я прочитал массу SO-вопросов о плистах и о том, как сохранять в них, и хотя я не знаю, почему ни одна iPhone-Dev-Book, которую я видел до сих пор, не освещала это (все они использовали редактирование tableView функция), мне удалось ДЕЙСТВИТЕЛЬНО записать в plist, скопировав его в папку документов следующим образом:
pListPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
pListPath = [pListPath stringByAppendingPathComponent:@"piggyBanks.plist"];
NSLog(@"Path: %@", pListPath);
// if the file does not exist yet, create it, and copy the plist data into it, that can be found in the bundle
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath:pListPath]) {
NSString *sourcePath = [[NSBundle mainBundle] pathForResource:@"piggyBanks" ofType:@"plist"];
[fileManager copyItemAtPath:sourcePath toPath:pListPath error:nil];
}
// make the plist content available for usage
pListContent = [[NSMutableDictionary alloc] initWithContentsOfFile:pListPath];
NSLog(@"pListContent: %@", pListContent);
Пока все хорошо, но теперь, если я хочу изменить какое-то значение plist, когда пользователь нажимает на tableViewCell (это пользовательский, если это важно), хотя pListPath
, pListContent
и другие являются свойствами, определенными в .h и синтезированными в . m, я должен переопределить pListPath
и pListContent
внутри didSelectRowAtIndexPath
, чтобы путь был известен в этот момент.
Может кто-нибудь, пожалуйста, скажите мне, почему? Я имею в виду, это хорошо, что это работает, но я хотел бы знать, почему это должно быть так, или я сделал ошибку где-то еще..
Спасибо!