我正在為 UserDefaults 創建一個自定義套件:
var store = UserDefaults(suiteName: "custom")
但是,我需要根據套件是否已經存在來觸發特定行為。
具體來說,如果未找到該套件,我希望使用預設的鍵/值對對其進行初始化。如果被發現,則無需采取任何特殊措施。在現實世界的場景中,想象一個應用程式最初啟動時帶有您可以單獨洗掉的預設過濾器(即后續啟動是指過濾器的最新狀態,而不是依賴于預設)。
我知道我可以通過檢查每個預設的可用性來檢查空狀態,例如:
var found = 0
for key in presetKeys {
if let _ = UserDefaults(suiteName: "custom")?.object(forKey: key) {
found = 1
}
}
if found == 0 {
// empty suite
}
但是,這沒有幫助,因為空狀態并不表示第一次運行。這可能是因為用戶洗掉了自動分配的所有預設。此外,用戶可以創建自己的鍵/值對以添加到套件中。他們的密鑰是動態生成的,排除了空狀態檢查(因為我不知道要查找什么密鑰)。
總而言之,有沒有一種方法可以簡單地判斷指定名稱的套件是否已經存在?
如果是,即使洗掉了所有鍵/值對,該套件是否繼續存在?我不希望出現用戶觸發的空狀態導致套件被永久洗掉的情況,從而導致應用程式的下一次運行自動重新加載預設,因為它混合了一個空的 v 新狀態。
希望這是有道理的!
uj5u.com熱心網友回復:
沒有內置方法可以檢查特定UserDefaults套件是否已存在。
但是,您可以創建一個帶有Bool值的特殊鍵,將其用作是否修改了任何預設值的標志。
即使洗掉了所有鍵/值對,該套件是否繼續存在?
是的。一個UserDefaults套件不需要保存任何值,它可以是空的。從套件中洗掉所有值不會影響套件本身的存在。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/439956.html
標籤:IOS 迅速 nsuserdefaults 优先 用户默认值
上一篇:顫振:文本欄位
