我已经为我的应用设置了应用组,以便我可以在应用和键盘扩展中访问相同的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