【发布时间】:2018-12-17 17:50:24
【问题描述】:
我正在使用NSUbiquitousKeyValueStore 在 iCloud 中存储用户首选项。为确保我了解NSUbiquitousKeyValueStore 的工作原理,我成功存储了String 值并在单独的设备上监控该值。下面解释我的配置。
我首先观察NSUbiquitousKeyValueStore 外部更改时发布的Notification:
NSUbiquitousKeyValueStore.didChangeExternallyNotification
然后,我设置了一个 String 值,该值是 UITextField 的输入:
let store = NSUbiquitousKeyValueStore.default
store.set(text, forKey: key)
store.synchronize()
为确保此操作有效,我在响应通知的方法中创建了一个UIAlertController。我观察到在主设备上设置值后的六秒内,警报出现在辅助设备上。但是,在设置值后,我从未观察到警报出现在主设备上。
在阅读NSUbiquitousKeyValueStore 的documentation 后,我无法找到更新NSUbiquitousKeyValueStore 后主设备也不会收到通知的原因。
在将更新的值设置到NSUbiquitousKeyValueStore 之前,我是否需要一种解决方案来在本地保存更新的值?我可以在 UserDefaults 本地保存这些值,然后再将它们保存在 NSUbiquitousKeyValueStore 中。但是,如果在尝试将它们保留在NSUbiquitousKeyValueStore 中时发生错误,则需要我恢复UserDefaults 中的值。如果没有通知主设备从其持久化的更改,我什至会在通知观察中收到错误通知吗?如果我成功后没有收到通知,我很难相信我会这样做。
我是否缺少某些东西,或者这是预期的行为?
【问题讨论】:
标签: icloud nsubiquitouskeyvaluestore