2013-03-11 3 views
0

Я разрабатываю приложение iOS с последним SDK.Как работать с Settings.bundle

Я создал Settings.bundle с Root.plist и еще четырьмя .plist, и каждый параметр в этих файлах имеет каждое значение по умолчанию.

Это первый раз, когда я работаю с Settings.bundle, и я потерян. Я нашел это question, где они сказали, что я должен читать значения Settings.bundle по умолчанию при каждом запуске приложения, и я не понимаю, почему.

Я думаю, что я должен продолжить использовать NSUserDefaults здесь, чтобы прочитать значения параметров.

У меня есть следующие вопросы:

  1. Как я могу читать значения, установленные на этих параметров с помощью настройки приложения?
  2. Как узнать, изменяет ли пользователь одно или несколько из этих значений? Пользователь заставляет приложение заходить в фоновый режим, открыть приложение «Настройка» и что-то изменить. Как я могу узнать это программно?
  3. Как сохранить изменения (изменение значения параметра) и увидеть это изменение в приложении «Настройки»?

Кстати, теперь у меня есть этот код:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    // Override point for customization after application launch. 

    // Set the application defaults 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    if (![defaults boolForKey:@"firstRun"]) 
    { 
     NSDictionary *appDefaults = [PreferenceDefaultValues dictionary]; 
     [defaults registerDefaults:appDefaults]; 

     [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"firstRun"]; 

     [defaults synchronize]; 
    } 

    return YES; 
} 

ответ

3
  1. identifier любого элемента предпочтения в Settings.bundle PLIST могут быть доступны с NSUserDefaults. Например, если у вас есть элемент предпочтения с идентификатором с именем allowDiagnostics, вы можете получить доступ к значению для этого элемента с помощью [NSUserDefaults standardUserDefaults] boolForKey:@"allowDiagnostics"] (при условии, что это был элемент BOOL).

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

  3. Точно так же вы их читаете. Продолжить пример 1, [NSUserDefaults standardUserDefaults] setBool:YES forKey:@"allowDiagnostics"]. Обратите внимание, что, позволяя пользователю изменять параметры из нескольких мест (Settings.bundle и где-то в вашем приложении), может смутить пользователя.

+0

Спасибо за ваш ответ. Должен ли я выполнять '[[NSUserDefaults standardUserDefaults] registerDefaults: appDefaults];' каждый раз, когда запускается мое приложение? – VansFannel

+0

Я обычно помещаю эту строку кода в свой 'applicationDidFinishLaunching: withOptions' –

Смежные вопросы