带有应用程序组的NSUserDefault在iOS 8 Beta3中不起作用
我必须保存Boolean
值NSUserDefault
在我的应用程序与custom keyboard extension
和共享与应用程序组。
我的代码在iOS 8
Beta1中工作。
self.defaults = [NSUserDefaults standardUserDefaults]; if([self.defaults boolForKey:@"BlackKey"]) { NSLog(@"Black"); } else { NSLog(@"White"); }
但不是在iOS 8 Beta3。 当我从NSUserDefault
检索Boolean
值,它不会返回任何内容,我无法从自定义键盘扩展加载。
我也尝试在NSUserDefault
使用initWithSuiteName
。 我只有一个这样的问题或iOS 8 Beta3的错误?
一些可能的解决scheme是:
-
您的应用程序组设置不正确,或者您没有在
initWithSuiteName:
使用正确的组标识符initWithSuiteName:
-
您尚未启用键盘的networking访问权限。 当您的键盘禁用networking访问权限(默认行为)时, 本文档指出以下内容:
没有包含应用程序的共享容器
-
这是一个错误。
尝试使用
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"BlackKey"];
当您使用以下代码保存并读取它时:
if([[NSUserDefaults standardUserDefaults] boolForKey:@"BlackKey"]) { NSLog(@"Black"); } else { NSLog(@"White"); }
或者如果你已经这样做了,那么它可能是bug,而且Xcode 6 beta版本也有其他的错误,所以在Xcode 5或更旧版本中尝试更安全。