Могу ли я программно перевернуть значения Info.plist во время работы моего приложения? - PullRequest
5 голосов
/ 16 сентября 2009

Я заинтересован в использовании клавиш SBUsesNetwork и UIRequiresPersistentWiFi в моем приложении; Однако я хотел бы включить их только при использовании определенного набора контроллеров представления. Есть ли способ программно перевернуть эти значения ключа во время работы приложения?

Ответы [ 5 ]

6 голосов
/ 16 сентября 2009

Вы не можете изменять содержимое вашего пакета во время работы, у вас нет прав на запись в этот каталог. Я не уверен, что есть способ сделать именно то, что вы хотите.

3 голосов
/ 16 сентября 2009

Я знаю, что вы можете получить ваш info.plist в виде NSDictionary через NSBundle со следующими данными:

NSDictionary* infoDictionary = [[NSBundle mainBundle] infoDictionary];

оттуда вы можете сделать mutableCopy из NSDictionary и установить значения в нем. При выполнении запросов к ключам вы должны обязательно запросить NSDictionary, а не ваш файл info.plist, но не должно быть сложно инкапсулировать все это в класс, который решает обе проблемы за вас.

Что касается непосредственного изменения файла info.plist вашего приложения, то там могут возникнуть проблемы (например, если вы измените файл, подпись кода завершится неудачно и ваше приложение будет считаться поврежденным), хотя я не уверен в этом.

0 голосов
/ 19 февраля 2013

Info.plist - это всего лишь словарь. Следовательно это может быть отредактировано.

0 голосов
/ 26 декабря 2009

Не думаю, что это сработает. [NSBundle mainBundle] имеет указатель на определенный infoDictionary. Даже если вы возьмете изменчивую копию, NSBundle ничего не знает о нашем новом списке. Кто-нибудь пробовал еще?

0 голосов
/ 17 сентября 2009

Вы не можете изменять Info.plist. Похоже, что Apple не разрешает делать то, что вам нужно.

...