我在开发者门户网站中将应用程序组添加到了我的应用程序ID,并在我的配置文件中使用了该应用程序ID。 Xcode中的我的产品标识符设置为该应用程序ID。
在我的app委托中,我从didFinishLaunchingWithOptions
中调用它NSUserDefaults.standardUserDefaults().setObject("hey", forKey: "TEST")
NSUserDefaults.standardUserDefaults().synchronize()
在我的键盘应用扩展程序中,我称之为:
if let test = NSUserDefaults.standardUserDefaults().objectForKey("TEST") as? String
{
println(test)
}
这绝不是真的。如果我删除验证测试并打印结果,则自定义键盘会崩溃。
EDIT 也尝试了同样的崩溃结果:
App 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的组。
我在这里缺少什么?
答案 0 :(得分:1)
设置
RequestsOpenAccess = YES;
设置:
NSUserDefaults * usrInfo = [[NSUserDefaults alloc] initWithSuiteName:@"myKeyboard"];
[usrInfo setObject:theme.icon forKey:@"themeName"]; // This is the new data;
[usrInfo synchronize];
keyboardChange:
NSUserDefaults * usrInfo = [[NSUserDefaults alloc] initWithSuiteName:@"myKeyboard"];
[usrInfo synchronize];
NSString * str = [usrInfo objectForKey:@"themeName"];
然后您可以更改键盘,例如,更改其背景
答案 1 :(得分:1)
从iOS设置菜单中移除键盘,然后使用“允许完全访问权限”再次添加键盘。它应该工作。
如果它仍然不起作用,请在应用程序组的“功能”部分中检查目标配置中是否包含应用程序和键盘扩展,以确保所有内容都已修复。
答案 2 :(得分:0)
踩到这个。在键盘扩展中,您需要"完全访问"有权写入应用程序组文件的内容。所以没有"完全访问"你需要使用NSUserDefaults.standardUserDefaults
问题在于,当您从应用程序组更改NSUserDefaults时,它会一直有效,直到您重新启动应用程序,因为它也会将值存储在内存中。很难调试。
我将价值保存到:app group NSUserDefaults
和NSUserDefaults.standardUserDefaults
。阅读时 - 检查两者。