Я знаю, что по этой проблеме уже есть множество тем, но я не могу найти ту, которая решает мою проблему. У меня есть список со словарем в качестве корня, содержащий три массива. Мой код для записи в plist отлично работает в симуляторе, но (нулевой) на устройстве.
- Я не пытаюсь писать в пакет приложений,
Мой путь к файлу правильный, и я проверяю при запуске, чтобы убедиться, что файл существует в папке «Документы» (и он действительно существует).
- (void) writeToPlist:(NSString *)fileName playerColor:(NSString *)player withData:(NSArray *)data { NSArray *sysPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory ,NSUserDomainMask, YES); NSString *documentsDirectory = [sysPaths objectAtIndex:0]; NSString *filePath = [documentsDirectory stringByAppendingPathComponent:fileName]; NSLog(@"File Path: %@", filePath); NSDictionary *plistDict = [[NSDictionary alloc] initWithContentsOfFile:filePath]; NSLog(@"plist: %@", [plistDict description]); [plistDict setValue:data forKey:player]; BOOL didWriteToFile = [plistDict writeToFile:filePath atomically:YES]; if (didWriteToFile) { NSLog(@"Write to file a SUCCESS!"); } else { NSLog(@"Write to file a FAILURE!"); } }
Отладочный вывод:
File Path: /var/mobile/Applications/CA9D8884-2E92-48A5-AA73-5252873D2571/Documents/CurrentScores.plist
plist: (null)
Write to file a FAILURE!
Я использовал этот же метод в других проектах, поэтому я не знаю, забыл ли я что-то или в чем дело. Я проверил орфографию/прописные буквы и переделал plist, ничего не изменилось.
Так почему же plistDict (null) на устройстве, а не на симуляторе? Прошу прощения, если пропустил решение в другом посте на plists.