我已經爲我的應用設置了應用組,以便我可以在應用和鍵盤擴展中訪問相同的NSUserDefaults
。我有一個問題,但。我可以成功地將布爾值寫入默認值,但是當我在鍵盤上訪問它時,它總是返回false。我知道一個事實,它使用的密鑰ID和套件名稱完全相同。我確認應用程序組和應用程序鍵盤都已啓用,並且套件名稱與應用程序組標識符完全匹配。當從鍵盤訪問時,什麼可能導致它始終爲false
?在共享NSUserDefaults中存儲布爾總是返回假
在應用程序中:
NSUserDefaults *SharedDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.myname.sharedPrefsName"];
[SharedDefaults setBool:YES forKey:@"com.myname.appname.dataName"];
[SharedDefaults synchronize];
我沒有證實它並順利拿到設置爲YES,下一次我啓動的應用程序:
NSUserDefaults *SharedDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.myname.sharedPrefsName"];
BOOL dataIsYes = [SharedDefaults boolForKey:@"com.myname.appname.dataName"]; //YES
然而,在鍵盤它始終是假的:
let sharedprefs = NSUserDefaults(suiteName: "group.com.myname.sharedPrefsName")!
let data = sharedprefs.boolForKey("com.myname.appname.dataName") //false
從應用程序與鍵盤訪問時,標準用戶默認值不同 - 這是兩個不同的容器,因此您需要使用相同的套件名稱初始化默認值。 – Joey 2014-11-23 23:11:34