NSMutableArray writeToFile: атомарно всегда возвращает NO на устройстве, но отлично работает на симуляторе - PullRequest
1 голос
/ 18 ноября 2009

У меня есть plist файл с корнем типа Array в ресурсах в проекте xcode. При нажатии кнопки мне нужно получить доступ к этому списку и выяснить, содержит ли этот список конкретный элемент, если не записать новый элемент (NSString) в список.

Я делаю это следующим образом,

NSMutableArray *array = nil;
NSDictionary *dictionary = nil;
  path = [[NSBundle mainBundle] pathForResource:@"MyPlistName" ofType:@"plist"];
array = [[NSMutableArray alloc] initWithContentsOfFile:path];
dictionary = [self.dictionary objectForKey:@"tag"];

if(![array containsObject:dictionary])
{
    [array addObject:dictionary];
    if(![array writeToFile:path atomically:YES])
    {
        NSLog(@".plist writing was unsucessfull");
    }
     }

Это работает для меня на симуляторе, но когда я запускаю его на устройстве, метод writeToFile: atomically, кажется, всегда возвращает NO.

Я даже пытался с NSArchiver, даже если кажется, что возвращает мне НЕТ в качестве возвращаемого значения

Может кто-нибудь сказать, что я делаю не так ...

С уважением,

Сайед Юсуф

Ответы [ 2 ]

6 голосов
/ 18 ноября 2009

Вы не можете писать в пакет приложения, поэтому вы не можете писать в список в каталоге ресурсов. Один хороший способ - скопировать plist из каталога Resource в каталог Documents при первом запуске и получить к нему доступ в будущем.

1 голос
/ 18 ноября 2009

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

Как я могу получить доступный для записи путь на iPhone?

Скопируйте документ в доступный для записи путь и измените его там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...