草庐IT

ios - NSUserDefaults standardUserDefaults 不适用于扩展

coder 2023-09-06 原文

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

在我的应用委托(delegate)中,我从 didFinishLaunchingWithOptions 调用它

NSUserDefaults.standardUserDefaults().setObject("hey", forKey: "TEST")
NSUserDefaults.standardUserDefaults().synchronize()

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

if let test = NSUserDefaults.standardUserDefaults().objectForKey("TEST") as? String
 {
    println(test)
 }

这绝不是真的。如果我删除验证测试并只打印结果,自定义键盘就会崩溃。

编辑 也尝试过同样的崩溃结果:

应用委托(delegate)

var userDefaults = NSUserDefaults(suiteName: "group.jackedgames.myappgroup")
userDefaults.setObject("TEST", forKey: "TEST")
userDefaults.synchronize()

键盘扩展

var userDefaults = NSUserDefaults(suiteName: "group.jackedgames.myappgroup")
var test = userDefaults.objectForKey("TEST") as String
NSLog(test)

在两个目标的“功能”部分中,我选择了启用了此组 ID 的组。

我在这里错过了什么?

最佳答案

  1. 设置

    RequestsOpenAccess = YES;
    
  2. 设置:

    NSUserDefaults * usrInfo = [[NSUserDefaults alloc] initWithSuiteName:@"myKeyboard"];
    
    [usrInfo setObject:theme.icon forKey:@"themeName"];  // This is the new data;
    
    [usrInfo synchronize]; 
    
  3. 键盘变化:

    NSUserDefaults * usrInfo = [[NSUserDefaults alloc] initWithSuiteName:@"myKeyboard"];
    
    [usrInfo synchronize];
    
     NSString * str = [usrInfo objectForKey:@"themeName"];
    

然后你可以改变键盘,例如,改变它的背景

关于ios - NSUserDefaults standardUserDefaults 不适用于扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24620622/

有关ios - NSUserDefaults standardUserDefaults 不适用于扩展的更多相关文章

随机推荐