2013-03-11 73 views
0

我正在開發具有最新SDK的iOS應用程序。如何使用Settings.bundle

我創建了一個Settings.bundleRoot.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. 在Settings.bundle plist中首選項的identifier可以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 2013-03-12 06:31:00

+0

我通常把這行代碼放在我的'applicationDidFinishLaunching:withOptions' – 2013-03-12 16:26:03

相關問題