(IPHONE) Большая путаница для чтения / записи одного и того же файла из папки ресурсов - PullRequest
0 голосов
/ 18 января 2010

Я прочитал несколько веток по этому вопросу, но, к сожалению, не нашел ответа на мою проблему: (

У меня есть XML-файл в папке ресурсов, и мне нужно просто переписать тот же файл; логика приложения:

  1. отображать данные, загруженные из файла
  2. добавить новые данные в тот же файл

для чтения файла мой код:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"myfile" ofType:@"xml"];  
NSData *dataXml=[NSData dataWithContentsOfFile:filePath];

для перезаписи того же файла:

NSString *myDataString = @"?xml version=""1.0"" encoding=""UTF-8""?";
NSString *path = [[NSBundle mainBundle] pathForResource:@"myfile" ofType:@"xml"];  
BOOL ok=[myDataString writeToFile:path atomically:YES encoding:NSUnicodeStringEncoding error:nil];

Для чтения работает нормально, но когда я пытаюсь написать, файл не обновляется, но он был создан еще один в другой папке, я проверил это в симуляторе, заметив, что приложение находится в папке, как это:

Пользователи / пользователь / Библиотека / Поддержка приложений / iPhoneSimulator / Пользователи / Приложения / 05279766-7B2C-4FC0-BFB0-D87A158A3337 /

, где есть 3 папки (Documents, tmp, Libary) и файл комплекта .app (где находится мой xml-файл)

Мой вопрос: моя логика неверна? каким образом находятся управляемые папки приложений на устройстве ??

спасибо заранее и извините за длинную ветку!

1 Ответ

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

Вы не можете записывать файлы в ваш пакет приложений;он доступен только для чтения (по крайней мере, на устройстве; вы можете сделать это в симуляторе).

Что вам нужно сделать, это использовать папку ~ / Documents для файла.Если его там нет, сначала прочитайте его из вашего комплекта, затем запишите его в ~ / Documents и затем прочитайте его оттуда.

...