我有一个问题:除了最新的 Couchbase 移动解决方案之外,我还使用 Xcode 和 Swift。如果我使用字符串“rows”来注册观察者然后监听它,LiveQuery 也可以完美工作。但我的应用程序中有一个 View ,我需要两个实时查询。因此,我打算使用两个不同的关键路径进行两个实时查询,例如第一个“getTopicComments”,第二个“getTopicDetails”,这样我就可以区分它们,如下所示。但正如我所说,它仅适用于关键路径“行”。我是否误解了某事?因为我完全不明白为什么它不能与另一个字符串一起使用。在我看来,正如我在 couchbase 的文档中所读到的那样,它应该与我在注册实时查询时使用的字符串无关。
liveQueryOne.addObserver(self, forKeyPath: "getTopicComments", options: .new, context: nil)
liveQueryTwo.addObserver(self, forKeyPath: "getTopicDetails", options: .new, context: nil)
和
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if (keyPath == "getTopicComments") {
} else if (keyPath == "getTopicDetails") {
}
}
最佳答案
“rows”是 CBLLiveQuery 上的 KVO 可观察属性。这就是为什么您可以添加观察者并查找 KVO 通知。实时查询背后的想法是,应用程序可以自动收到影响查询结果的数据库更改通知。当数据库更新时,“行”属性将更新,这就是为什么您观察此属性以了解更改的原因。您在上面添加的 keyPaths 在 CBLLiveQuery 中不存在,因此您不会看到任何通知。
关于ios - Couchbase LiveQuery 无法与 "rows"之外的其他 keyPath 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43742279/