Хранение данных в plist работает в simulaor, но не в устройстве - PullRequest
2 голосов
/ 12 апреля 2010

Я новичок в разработке для iPhone. Я создал plist, например, из моего предыдущего поста . Хорошо работает в симуляторе, но не в устройстве.

Я получаю сохраненное значение из списка и проверяю состояние. Когда я использую симулятор, он работает, но не на устройстве.

1 Ответ

2 голосов
/ 12 апреля 2010

(1) Вы не можете записать в файл в папке ресурсов iPhone. Это часть системы безопасности телефона, которая предотвращает изменение приложения вредоносным кодом после его установки.

(2) Если вы хотите сохранить новые данные в файл, вам нужно записать файл в одну из автоматически сгенерированных папок. Всякий раз, когда приложение iPhone установлено на устройстве или симуляторе, система создает набор папок по умолчанию.

(3) Вы хотите записать либо в папку «Предпочтения», либо в папку «Документы». Если данные касаются работы приложения, запишите их в предпочтения. Если он содержит данные пользователя, пишите в Documents.

Параметры:

NSArray *sysPaths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask, YES); 
NSString *prefsDirectory = [[sysPaths objectAtIndex:0] stringByAppendingPathComponent:@"/Preferences"];

Документы:

NSArray *sysPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory ,NSUserDomainMask, YES); 
NSString *docsDirectory = [sysPaths objectAtIndex:0];

Скажем, вы хотите прочитать файл списка предпочтений по умолчанию, внести некоторые изменения и сохранить его в папке настроек.

NSString *plistPath=[[NSBundle mainBundle] pathForResource:@"PlistFileName" ofType:@"plist"];
NSMutableArray *defaultPrefs=[[NSMutableArray alloc] initWithContentsOfFile:plistPath];
//... modify defaultPrefs
NSString *outputFilePath=[prefsDirectory stringByAppendingPathComponent:@"alteredPrefs.plist"];
[defaultPrefs writeToFile:outputFilePath atomically:NO];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...