Почему мой iCloud KVS Observer не работает - PullRequest
0 голосов
/ 26 мая 2019

В моем приложении я реализовал класс 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() никогда не выполняется, хотя. Есть идеи почему?

1 Ответ

0 голосов
/ 28 мая 2019

Полагаю, вам необходимо соблюдать объект NSUbiquitousKeyValueStore.default, например:

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