在 Xamarin.iOS 中使用用戶預設值

本文涵蓋使用 NSUserDefault,在 Xamarin.iOS 應用程式或延伸模組中儲存預設設定。

類別 NSUserDefaults 提供 iOS 應用程式和延伸模組的方式,以程式設計方式與全系統的預設系統互動。 藉由使用預設系統,用戶可以設定應用程式的行為或樣式,以符合其喜好設定(根據應用程式的設計)。 例如,若要在計量與帝國度量中呈現數據,或選取指定的UI主題。

與應用程式群組搭配使用時, NSUserDefaults 也提供在指定群組內的應用程式(或延伸模組)之間進行通訊的方式。

關於用戶預設值

如上所述,用戶預設值 (NSUserDefaults) 可以新增至應用程式(或延伸模組),並用來提供使用者可在運行時間修改以調整應用程式外觀或作業的可設定選項。

當您的應用程式第一次執行時, NSUserDefaults 會從應用程式的 [用戶默認資料庫] 讀取索引鍵和值,並將其快取至記憶體,以避免每次需要值時開啟和讀取資料庫。

重要

Apple 不再建議開發人員呼叫 Synchronize 方法來直接同步處理記憶體內部快取。 相反地,它會定期自動呼叫,以保持記憶體內部快取與用戶的預設資料庫同步。

類別 NSUserDefaults 包含數種方便的方法,可用來讀取和寫入常見數據類型的喜好設定值,例如:字串、整數、浮點數、布爾值和 URL。 您可以使用 封存 NSData其他類型的數據,然後讀取或寫入使用者預設資料庫。 如需詳細資訊,請參閱Apple的喜好設定和 設定 程序設計指南

存取共用 NSUserDefaults 實例

共用使用者預設實例可讓您存取裝置目前使用者的 [用戶預設值]。 如果 Shared Defaults 物件不存在,則會在第一次存取並使用下列資訊初始化時建立它:

  • NSArgumentDomain,包含從目前應用程式剖析的預設值。
  • 應用程式的套件組合標識碼網域。
  • NSGlobalDomain由所有應用程式共用的預設值所組成。
  • 每個使用者慣用語言的個別網域。
  • NSRegistrationDomain具有一組暫時預設值的 ,可由應用程式修改,以確保搜尋一律成功。

若要存取共用使用者預設實例,請使用下列程式代碼:

// Get Shared User Defaults
var plist = NSUserDefaults.StandardUserDefaults;

存取應用程式群組 NSUserDefaults 實例

如上所述,使用應用程式群組 NSUserDefaults ,可用來在指定群組內的應用程式(或延伸模組)之間進行通訊。 首先,您必須確定已在iOS上的 [憑證、標識元和配置檔] 區段中正確設定應用程式群組和必要的應用程式標識碼 開發人員中心,並已安裝在開發環境中。

接下來,您的應用程式和/或延伸模組項目必須建立上述其中一個有效的應用程式標識碼,而且檔案必須包含在應用程式套件組合中,且 Entitlements.plist 已啟用和指定應用程式群組。

有了這一切,即可使用下列程式代碼來存取共用應用程式群組用戶預設值:

// Get App Group User Defaults
var plist = new NSUserDefaults ("group.com.xamarin.todaysharing", NSUserDefaultsType.SuiteName);

其中 group.com.xamarin.todaysharing 是在您要存取的憑證、標識元和配置檔建立的應用程式群組。 如需詳細資訊,請參閱 應用程式群組功能 檔。

讀取預設值

存取所需的使用者預設資料庫之後,您可以使用索引鍵/值組和數個便利方法,根據所讀取的數據類型,從預設值讀取值:

  • ArrayForKey - 針對指定的索引鍵值傳回 的 陣列 NSObjects
  • BoolForKey - 傳回指定索引鍵的布爾值。
  • DataForKey - 傳回 NSData 指定索引鍵的物件。
  • DictionaryForKey - 傳 NSDictionary 回指定索引鍵的 。
  • DoubleForKey - 傳回指定索引鍵的雙精度浮點數。
  • FloatForKey - 傳回指定索引鍵的浮點數。
  • IntForKey - 傳回指定索引鍵的整數值。
  • StringArrayForKey - 從指定的索引鍵值傳回 物件的陣列 String
  • StringForKey - 傳回指定索引鍵的字串值。
  • URLForKey - 傳回 NSUrl 指定索引鍵的值。

例如,下列程式代碼會從用戶預設值讀取布爾值:

// Get Shared User Defaults
var plist = NSUserDefaults.StandardUserDefaults;
...

// Get value
var useHeader = plist.BoolForKey("UseHeader");

撰寫預設值

就像讀取上述值一樣,在您存取所需的使用者預設資料庫之後,您可以使用索引鍵/值組和數個便利方法,根據所寫入的數據類型,將值寫入預設值:

  • SetBool - 將指定的布爾值寫入指定的索引鍵。
  • SetDouble - 將指定的雙精度浮點數寫入指定的索引鍵。
  • SetFloat - 將指定的浮點數寫入指定的索引鍵。
  • SetString - 將指定的字串值寫入指定的索引鍵。
  • SetURL - 將指定的網址 (NSUrl) 值寫入指定的索引鍵。

例如,下列程式代碼會將布爾值寫入用戶預設值:

// Get Shared User Defaults
var plist = NSUserDefaults.StandardUserDefaults;
...

// Save value
plist.SetBool(useHeader, "UseHeader");
...

重要

當您的應用程式第一次執行時, NSUserDefaults 會從應用程式的 [用戶默認資料庫] 讀取索引鍵和值,並將其快取至記憶體,以避免每次需要值時開啟和讀取資料庫。

摘要

本文涵蓋 類別 NSUserDefaults ,以及如何用來提供一組可供使用者用來設定 Xamarin.iOS 應用程式的選項。 此外,它涵蓋使用應用程式群組在擴充功能與其父應用程式之間或群組中的應用程式之間進行通訊。