swift - 为什么我的 iCloud KVS Observer 不工作

标签 swift icloud key-value-observing nsubiquitouskeyvaluestore

在我的应用程序中,我实现了一个如下所示的 Preferences 类。

public class Preferences: Codable {
    public static var sharedPreferences: Preferences = {
        let preferences = Preferences()

        return preferences
    }()

    public class func shared() -> Preferences {
        return sharedPreferences
    }

    private let cloud: NSUbiquitousKeyValueStore = NSUbiquitousKeyValueStore.default

    public init () {
        NotificationCenter.default.addObserver(self, selector: #selector(keysDidChangeOnCloud(notification:)),
                                               name: NSUbiquitousKeyValueStore.didChangeExternallyNotification,
                                               object: nil)
        self.cloud.synchronize()
    }

    @objc func keysDidChangeOnCloud(notification: Notification) {
        print("CLOUD CHANGED")
    }
}

我观察到键值存储发生变化。但 print() 从未被执行过。知道为什么吗?

最佳答案

我相信您需要像这样观察 NSUbiquitousKeyValueStore.default 对象:

NotificationCenter.default.addObserver(self, selector: #selector(keysDidChangeOnCloud(notification:)),
                                           name: NSUbiquitousKeyValueStore.didChangeExternallyNotification,
                                           object: NSUbiquitousKeyValueStore.default)

关于swift - 为什么我的 iCloud KVS Observer 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56316706/

相关文章:

ios - 这个 observeValueForKeyPath 有什么问题 :ofObject:change:context: implementation?

swift - 如果让 url = URL(string :"") 对于 .JPEG 图像总是失败

ios - 根据 segue 更改 navigationItem leftBarButtonItem

objective-c - 如果我没有使用 Core Data,我该如何使用 iCloud Sync?

iphone - 在iOS 4上编译时,iphone iCloud应用程序崩溃

ios - 通过kvo观察realm List类型时如何获取 "old"值

iphone - 如何移除 KVO 观察者?

ios - Swift 2.1 核心数据 - 使用 setValue() 更新图像记录

swift - 如何在 Mac OS 上截屏 NSView?

ios - 在 XCode : Signature invalid 之外测试 iCloud