2011-12-21 2 views
4

Я был уверен, что писать в главном Bundle не представляется возможное в прошивке ... например, операция, как:Запись в каталоге основного пучка. Это разрешено?

NSString *path = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"]; 
.....something 
[xmlData writeToFile:path atomically:YES]; 

Почему первый пример Apple's documentation использования этого точный код?

ответ

3

Пример для OS X, которая не столь строги с разрешениями как прошивкой.

Я был бы удивлен, если вы в состоянии сделать это гораздо дольше (если можете вообще) в комплекте приложений для Mac App Store.

Возможно, возникла ошибка в отношении документации.

+0

Иногда бывает, чтобы найти документацию для OSX в документах iOS ... но на этот раз это меня удивило ... это была бы ужасная ошибка, потому что, как говорит @omz, в симуляторе это отлично работает! и разработчик мог ошибочно подумать, использовать этот метод в своем приложении ... – MatterGoal

+0

Другая причина, почему тестирование на устройстве так важно! – jrturton

2

Это не ссылка на основной комплект. Это путь к папке ресурсов и plist внутри этой папки.

Поэтому имя функции pathForResource...

Все в главном расслоении криптографически подписан при компиляции приложения. Однако папка ресурсов не существует. Вы можете свободно писать на и от этого.

для @jrturton

// we need to get the plist data... 
    NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Symptoms" ofType:@"plist"]; 
    NSMutableArray *dataArray = [[NSMutableArray alloc] initWithContentsOfFile:plistPath]; 

    // add a new entry 
    NSDictionary *addQuestion = [[NSDictionary alloc] initWithObjectsAndKeys:@"Blank.png",@"Icon", 
           [NSString stringWithFormat:@"%i",r],@"ID", 
           [titleTextField text],@"Title", 
           [questionTextField text],@"Text", 
           qnType,@"Type", 
           @"1",@"Custom", 
           [NSArray arrayWithObjects:@"Yes",@"No",nil],@"Values", 
           [unitsTextField text],@"Units", 
           nil]; 
    [dataArray addObject:addQuestion]; 
    [addQuestion release]; 

    // rewrite the plist 
    [dataArray writeToFile:plistPath atomically:YES]; 
+0

Таким образом, как я выбрал, где хранятся файлы? Папка документа как функция для представления файлов в iTunes ... но в чем разница между пути библиотеки и пути к ресурсам? – MatterGoal

+0

Я уверен, что это неправильно, хотя я не могу найти документацию, чтобы поддержать меня. Папка ресурсов является частью основного пакета и не может быть изменена на устройстве. – jrturton

+0

Если вы попытаетесь сделать это на устройстве, вы получите сообщение об ошибке «Операция не разрешена» (она работает в симуляторе, потому что приложения симулятора не кодируются). – omz