我NSUbiquitousKeyValueStore
用来在 iCloud 中存储用户首选项。为了确保我了解其NSUbiquitousKeyValueStore
工作原理,我成功地存储了一个String
值并在单独的设备上监控了该值。下面解释我的配置。
我首先观察外部更改Notification
时发布的内容:NSUbiquitousKeyValueStore
NSUbiquitousKeyValueStore.didChangeExternallyNotification
然后,我设置了一个String
作为 a 输入的值UITextField
:
let store = NSUbiquitousKeyValueStore.default
store.set(text, forKey: key)
store.synchronize()
为了确保这个工作,我在UIAlertController
响应通知的方法中创建了一个。我观察到在主设备上设置值后的六秒内,警报出现在辅助设备上。但是,在设置值后,我从未观察到警报出现在主设备上。
阅读文档后NSUbiquitousKeyValueStore
,我找不到主设备在更新后也不会收到通知的原因NSUbiquitousKeyValueStore
。
在将更新的值设置到之前,我是否需要一种解决方案来在本地保存更新的值NSUbiquitousKeyValueStore
?我可以在将值UserDefaults
持久保存在NSUbiquitousKeyValueStore
. 但是,UserDefaults
如果在尝试将它们保留在NSUbiquitousKeyValueStore
. 如果没有通知主设备从其持久化的更改,我什至会在通知观察中收到错误通知吗?如果我在成功时没有收到通知,我很难相信我会这样做。
有什么我遗漏的东西,还是这是预期的行为?