NSUserDefaults不在iOS 8中的应用程序和自定义键盘之间存储值

bde*_*dev 7 objective-c nsuserdefaults ios ios8 ios-app-extension

我正在尝试在我的应用程序和自定义键盘扩展之间共享数据.我在主应用程序目标和自定义键盘目标中打开了App Groups.在我的主应用程序中,我添加了一个具有以下内容的对象:

NSUserDefaults *userDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.mycompany.myapp"];
[userDefaults setObject:someObject forKey:@"KEY"];
Run Code Online (Sandbox Code Playgroud)

在控制台中打印出[userDefaults dictionaryRepresentation]会显示该对象已被保存,调用[userDefaults objectForKey:@"KEY"]也是如此.

但是,当我尝试在自定义键盘扩展中访问此对象时:

NSUserDefaults *userDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.mycompany.myapp"];
NSString *value = [userDefaults objectForKey:@"KEY"];
Run Code Online (Sandbox Code Playgroud)

值为nil,对[userDefaults dictionaryRepresentation]的调用不会显示上面保存的条目.我正在使用Xcode 6 beta 3.有什么想法吗?

更新已 在Xcode 6 beta 5中修复

San*_*aus 7

一些可能的解决方案是:

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

  2. 您尚未为键盘启用网络访问权限.当您为键盘禁用网络访问时,此文档说明以下内容(默认行为):

    没有包含app的共享容器

  3. 这是一个错误.