NSUserDefaults standardUserDefaults不支持扩展

Spe*_*tak 5 nsuserdefaults ios swift ios8

我在开发人员门户中将应用程序组添加到了我的应用程序ID,并在我的配置文件中使用了该应用程序ID.Xcode中的我的产品标识符设置为该应用程序ID.

在我的app委托中,我从didFinishLaunchingWithOptions调用它

NSUserDefaults.standardUserDefaults().setObject("hey", forKey: "TEST")
NSUserDefaults.standardUserDefaults().synchronize()
Run Code Online (Sandbox Code Playgroud)

在我的键盘应用程序扩展中,我称之为:

if let test = NSUserDefaults.standardUserDefaults().objectForKey("TEST") as? String
 {
    println(test)
 }
Run Code Online (Sandbox Code Playgroud)

这从来都不是真的.如果我删除验证测试并打印结果,则自定义键盘会崩溃.

编辑也尝试了相同的崩溃结果:

App代表

var userDefaults = NSUserDefaults(suiteName: "group.jackedgames.myappgroup")
userDefaults.setObject("TEST", forKey: "TEST")
userDefaults.synchronize()
Run Code Online (Sandbox Code Playgroud)

键盘扩展

var userDefaults = NSUserDefaults(suiteName: "group.jackedgames.myappgroup")
var test = userDefaults.objectForKey("TEST") as String
NSLog(test)
Run Code Online (Sandbox Code Playgroud)

在两个目标的"功能"部分中,我启用了已选择此组ID的组.

我在这里错过了什么?

小智 1

  1. RequestsOpenAccess = YES;
    
    Run Code Online (Sandbox Code Playgroud)
  2. 设置:

    NSUserDefaults * usrInfo = [[NSUserDefaults alloc] initWithSuiteName:@"myKeyboard"];
    
    [usrInfo setObject:theme.icon forKey:@"themeName"];  // This is the new data;
    
    [usrInfo synchronize]; 
    
    Run Code Online (Sandbox Code Playgroud)
  3. 键盘更改:

    NSUserDefaults * usrInfo = [[NSUserDefaults alloc] initWithSuiteName:@"myKeyboard"];
    
    [usrInfo synchronize];
    
     NSString * str = [usrInfo objectForKey:@"themeName"];
    
    Run Code Online (Sandbox Code Playgroud)

然后您可以更改键盘,例如更改其背景