Я использую этот код для чтения данных из локального (в проекте XCode) файла .plist.Как получить новые данные .plist
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"GameData.plist"];
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath: path])
{
NSString *bundle = [[NSBundle mainBundle] pathForResource:@"GameData" ofType:@"plist"];
[fileManager copyItemAtPath:bundle toPath: path error:&error];
}
gameData = [[NSMutableDictionary alloc] initWithContentsOfFile: path];
И это работало большое начало, но теперь я нахожу, когда я пошагово код в симуляторе, что моя игра использует версию .plist файла, который существовал в самом начале, и новые поля Я установил в своем новом файле GameData.plist, который не появляется.
Я полагаю, это потому, что он не получает данные снова, если файл уже существует? но как я могу получить новую версию файла .plist? Я попытался удалить оператор if, но я получаю ошибку времени выполнения, когда файл уже существует.
Проверьте возвращаемое значение 'copyItemAtPath: error:'. Если он возвращает 'NO', log' error'. – rmaddy
Я оставлю всю строку, но она содержит эту «ошибку какао 516.» и «Операция не может быть завершена. Файл существует», это отображается в строке copyItemAtPath. – Phil
Это не имеет смысла. Вы проверяете, существует ли он, и пытайтесь копировать, если он не существует. Поэтому вы не должны получать ошибку о существующем файле. – rmaddy