我在使用 NSUbiquitousKeyValueStore 并让它在两个设备之间可靠地同步时遇到了麻烦。它开始让我发疯。疯狂的。
我看我的代码调用:
[[NSUbiquitousKeyValueStore defaultStore] setObject:_someData forKey:@"SomeData"];
[[NSUbiquitousKeyValueStore defaultStore] synchronize];
但更多时候,数据永远不会出现在其他设备上。
我已经看到它在几秒钟内同步,而其他时候我等了一个小时却从未见过同步。我将设备插入 xcode 并开始调试,有时数据会突然弹出,有时则不会。有时确实如此。
拨打此电话后,退出并重新启动应用程序,如果我阅读它,我会看到旧数据,而不是我刚刚发布的新数据。在同一台设备上。
当应用程序启动时,我会调用:
_someData = [[NSUbiquitousKeyValueStore defaultStore] stringForKey:@"SomeData"];
我假设没有需要运行的初始化代码。我没有找到任何例子。
当它工作时,它工作得很好。
然后今晚我正在查看设备日志,并在我最后一次退出后发现了这个(并尝试发送数据):
Jul 8 21:32:03 unknown syncdefaultsd[17296] <Warning>: Error writing storage for com.mycompany.myapp to /private/var/mobile/Applications/4AC8C56E-6060-408B-84F9-F7EC336221D9/Library/SyncedPreferences/com.mycompany.myapp.plist: Error Domain=NSCocoaErrorDomain Code=4 "The operation couldn’t be completed. (Cocoa error 4.)" UserInfo=0xde80d40 {NSFilePath=/private/var/mobile/Applications/4AC8C56E-6060-408B-84F9-F7EC336221D9/Library/SyncedPreferences, NSUnderlyingError=0xde80b20"The operation couldn’t becompleted. No such file or directory"}
该路径不是我的应用程序沙箱的有效路径(错误的 GUID),所以我想知道这是否是我问题的根源。在开发过程中我确实删除并重新安装了很多应用程序,所以我想知道某处是否缓存了一些旧路径并且它正在尝试同步该数据。有没有办法清除它?
我知道我的所有权利都设置正确,因为它有时确实有效。
[[NSUbiquitousKeyValueStore defaultStore] synchronize]
正在回归YES
。
有没有其他人看到这个问题或那个错误?当我的应用程序启动和将数据发送到云时,我还需要做些什么吗?根据文档和示例,这似乎很容易。