【问题标题】:NSUbiquitousKeyValueStore Notification for Current Device当前设备的 NSUbiquitousKeyValueStore 通知
【发布时间】: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。我观察到在主设备上设置值后的六秒内,警报出现在辅助设备上。但是,在设置值后,我从未观察到警报出现在主设备上。

在阅读NSUbiquitousKeyValueStoredocumentation 后,我无法找到更新NSUbiquitousKeyValueStore 后主设备也不会收到通知的原因。

在将更新的值设置到NSUbiquitousKeyValueStore 之前,我是否需要一种解决方案来在本地保存更新的值?我可以在 UserDefaults 本地保存这些值,然后再将它们保存在 NSUbiquitousKeyValueStore 中。但是,如果在尝试将它们保留在NSUbiquitousKeyValueStore 中时发生错误,则需要我恢复UserDefaults 中的值。如果没有通知主设备从其持久化的更改,我什至会在通知观察中收到错误通知吗?如果我成功后没有收到通知,我很难相信我会这样做。

我是否缺少某些东西,或者这是预期的行为?

【问题讨论】:

    标签: icloud nsubiquitouskeyvaluestore


    【解决方案1】:

    也许他们updated the documentation(距您询问已超过 1 年)。

    “此通知仅在从 iCloud 收到更改时发送;当您的应用设置值时不会发送。”

    我认为这意味着因为没有观察到任何变化(本地设备和 iCloud 已经同步) - 您不会收到通知。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-25
      • 2023-03-26
      相关资源
      最近更新 更多