writeToFile работает на симуляторе, но не на устройстве - PullRequest
3 голосов
/ 06 января 2010

У меня есть список, который я меняю:

NSString *finalPath = [path stringByAppendingPathComponent:@"KeyFrameFileByMovie.plist"];
NSMutableDictionary *keyFrameFileByMovie = [[NSMutableDictionary alloc] initWithContentsOfFile:finalPath];
[keyFrameFileByMovie setValue:keyFrameName forKey:movieName];
BOOL isOk = [keyFrameFileByMovie writeToFile:finalPath atomically:YES];

На симуляторе isOk стоит 1 на устройстве isOK 0

Я не думаю, что это чувствительная к регистру проблема, потому что у меня есть работающий код:

NSString *finalPath = [path stringByAppendingPathComponent:@"KeyFrameFileByMovie.plist"];<br>
NSDictionary *plistData =[[NSDictionary dictionaryWithContentsOfFile:finalPath] retain];

Почему на устройстве происходит сбой writeToFile?

Ответы [ 4 ]

6 голосов
/ 06 января 2010

Приложение для iPhone имеет очень строгую структуру каталогов. К сожалению, разрешения на устройство против симулятора отличаются. Таким образом, единственная проблема здесь может заключаться в том, что вы сохраняете не в каталог Documents, а в каталог MainBundle.

В приведенном выше примере, каково значение пути?

4 голосов
/ 06 января 2010

С какого пути вы изначально начинаете? Помните, что iPhone чувствителен к регистру, а Mac (как правило) - нет, так что это может вас запутать. В обоих случаях я бы регистрировал finalPath в журнале и визуально проверял, что они одинаковые.

3 голосов
/ 30 октября 2011

Добавить "/" при добавлении строки

NSString *finalPath = [path stringByAppendingPathComponent:@"/KeyFrameFileByMovie.plist"];
0 голосов
/ 26 декабря 2013
NSString *applicationDocumentsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *storePath = [applicationDocumentsDir stringByAppendingPathComponent:@"default.txt"];
NSString *stringFilepath = [docPath stringByAppendingPathComponent:@"configlocaljson.json"];[replacedString writeToFile:stringFilepath atomically:YES encoding:NSUTF8StringEncoding error:nil];
NSError * error = nil;
BOOL success = [replacedString writeToFile:stringFilepath atomically:YES encoding:NSUTF8StringEncoding error:&error];
NSLog(@"Success = %d, error = %@", success, error);

Его работа для меня.

...