带有应用程序组的NSUserDefault在iOS 8 Beta3中不起作用

我必须保存BooleanNSUserDefault在我的应用程序与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是:

  1. 您的应用程序组设置不正确,或者您没有在initWithSuiteName:使用正确的组标识符initWithSuiteName:

  2. 您尚未启用键盘的networking访问权限。 当您的键盘禁用networking访问权限(默认行为)时, 本文档指出以下内容:

    没有包含应用程序的共享容器

  3. 这是一个错误。

尝试使用

 [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"BlackKey"]; 

当您使用以下代码保存并读取它时:

 if([[NSUserDefaults standardUserDefaults] boolForKey:@"BlackKey"]) { NSLog(@"Black"); } else { NSLog(@"White"); } 

或者如果你已经这样做了,那么它可能是bug,而且Xcode 6 beta版本也有其他的错误,所以在Xcode 5或更旧版本中尝试更安全。