Написать в директорию Main Bundle. Это разрешено?
Я был почти уверен, что запись в основном Bundle невозможна в iOS ... например, такая операция:
NSString *path = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"];
.....something
[xmlData writeToFile:path atomically:YES];
Почему первый пример в документации Apple использует этот точный код?
2 ответа
Решение
Пример для OS X, которая не так строга с разрешениями, как iOS.
Я был бы удивлен, если бы вы могли делать это намного дольше (если вообще можете сейчас) в комплекте приложений Mac App Store.
Возможно, стоит оставить сообщение об ошибке в документации.
Это не ссылка на основной комплект. Это путь к папке ресурсов и список в этой папке.
Отсюда и название функции 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];