有时,但并非总是如此(我已经让这个工作了一段时间),应用程序/扩展程序进入我无法读取我的应用程序组中在我的配套应用程序和我的应用程序扩展程序之间设置的标志的状态。不知道它是如何进入这种状态的,也不知道为什么这些值不同,但对于我的应用程序来说,这些始终保持同步至关重要。
配套应用 viewDidLoad:
NSUserDefaults *myAppSettings = [[NSUserDefaults alloc] initWithSuiteName:@"group.myapp"];
.....
[myAppSettings setBool:true forKey:@"myBool"];
[myAppSettings synchronize];
NSLog([myAppSettings boolForKey:@"myBool"] ? @"Companion app - bool TRUE" : @"Companion app - bool FALSE");
应用扩展 viewDidLoad
NSUserDefaults *myAppSettings = [[NSUserDefaults alloc] initWithSuiteName:@"group.myapp"];
[myAppSettings synchronize];
NSLog([myAppSettings boolForKey:@"myBool"] ? @"App extension app - bool TRUE" : @"App extension - bool FALSE");
控制台输出
Companion app - bool TRUE
App extension - bool FALSE
在我的配套应用程序进入后台之前,我也会同步。我在门户等中设置了我的应用程序组。
我究竟做错了什么?
编辑
显然其他人也有这个问题: https ://devforums.apple.com/message/977151#977151
“我认为这目前非常有问题。
有时数据共享工作,然后发生变化,突然间小部件无法再看到共享数据(在模拟器和设备上)。
烦人,希望在下一个测试版中更可靠一点!”
编辑 2 看起来另一个人也报告了这个确切的问题:
“我也注意到了同样的事情。这不仅发生在 NSUserDefaults 上,还发生在容器文件夹中的所有文件上。键盘扩展在使用键盘一段时间后突然失去对容器文件夹的读/写权限。”
编辑 3 更多证据:https ://devforums.apple.com/message/1028078#1028078
升级到 beta 3 后,我注意到有时键盘无法打开数据库,因为它无法访问数据库文件。键盘之前已经能够访问该文件。
编辑 4
似乎这可能是因为键盘丢失了RequestsOpenAccess
标志。但我无法重现它,我也无法确定。
编辑 5
似乎其他人在 iOS8 GM 版本中报告了这一点:
这个问题在我的 GM 中仍然存在。它似乎与键盘崩溃有关..但键盘和包含应用程序之间似乎存在一些争论,即谁以什么顺序创建套件。我认为这个问题是在苹果的一端。相信我,我希望这是我的错,但我花了无数个小时反复试验。无论我在代码中做什么并使用 NSLog 进行验证,它最终都会处于这种状态。希望有人能找到灵丹妙药。:S
有人解决了这个问题吗?