Я нашел в сети некоторый код, который утверждает, что это возможно, однако мне не удалось сделать это самому, однако, если вы не знаете заранее количество аргументов, вам также необходимо динамически построить строку формата Я просто не вижу смысла.
Вам лучше просто построить строку, перебирая массив.
Вы можете найти удобный для себя метод stringByAppendingString: или stringByAppendingFormat: экземпляр.
Я не знаю, понимаю ли я ваш вопрос, но если вы хотите написать в .plist в своем пакете .app, вы, вероятно, делает что-то не так. Если вы хотите сохранить настройки, вам следует рассмотреть возможность использования NSUserDefaults .
Если вы действительно хотите изменить связанный .plist - вот некоторый код:
NSString *plistPath = nil;
NSFileManager *manager = [NSFileManager defaultManager];
if (plistPath = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"Contents/Info.plist"])
{
if ([manager isWritableFileAtPath:plistPath])
{
NSMutableDictionary *infoDict = [NSMutableDictionary dictionaryWithContentsOfFile:plistPath];
[infoDict setObject:[NSNumber numberWithBool:hidden] forKey:@"LSUIElement"];
[infoDict writeToFile:plistPath atomically:NO];
[manager changeFileAttributes:[NSDictionary dictionaryWithObject:[NSDate date] forKey:NSFileModificationDate] atPath: [[NSBundle mainBundle] bundlePath]];
}
}
Обновление:
Нейт Флинк указал, что некоторые из методов NSFileManager, использованных выше, устарели.
Он опубликовал ответ с описанными ниже методами замены:
https://stackoverflow.com/a/12428472/100848
Когда вы создаете приложение, оно создает исполняемый файл «appName.app», и все файлы создаются в пакете. Следовательно, вы не можете получить доступ к папке ресурсов во время работы приложения, потому что все данные находятся в пакете (а не в папке).
Однако вы можете получить доступ к временной папке, которая содержит некоторую информацию о приложении. Вы можете найти временную папку здесь: Откройте средство поиска - щелкните свое имя пользователя (в разделе МЕСТА) - Библиотека - Поддержка приложений - Симулятор iPhone - Пользователь - Приложения - (здесь вы можете найти все временные папки приложений iPhone)
Вы можете получить доступ к этой временной папке:
NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
Если вы назовете свой файл save.plist, вы сможете получить к нему доступ следующим образом:
NSString *filePath = [documentsDirectory stringByAppendingString:@"_save.plist"];
Затем вы просто сохраняете свой файл в этот filePath, и он появится во временной папке с именем «Documents_save.plist».
* Обратите внимание, что имя временной папки меняется каждый раз при запуске приложения.
Рекомендовать Книга для вас: 《Начало разработки для iPhone - изучение iPhone SDK》. В главе 11 вы можете найти то, что хотите.
Подводя итог некоторым другим ответам:
Проблема в том, что вы пытаетесь записать файл обратно в папку, содержащую ваше приложение. Эта папка недоступна для записи во время выполнения. Все, что вы делаете, в порядке, вам просто нужно выбрать другое место для записи файла.
Вы можете использовать функцию NSSearchPathForDirectoriesInDomains, чтобы найти более подходящую папку для этих данных. (Например, папка @ "Документы".)