ios - Couchbase LiveQuery 无法与 "rows"之外的其他 keyPath 一起使用

标签 ios swift couchbase livequery nosql

我有一个问题:除了最新的 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/

相关文章:

go - 奇怪的行为 GoLang 将字符串存储到变量中的长度限制为 64 字节

ios - 如何从 Swift 中的另一个类扩展中调用类函数

ios - 如何使用 viewWillTransitionToSize 停止旋转

ios - Equatable 实现似乎不适用于泛型

swift - Swift 中的 NSData appendBytes

nosql - 如何在 couchbase 查询中按 json 对象的值对文档进行排序?

ios - Xcode调试(断点)问题

iOS6手机配置CA链变化

ios - 通过导入的数据库swift进行SQL查询

elasticsearch - Couchbase 5 是否使 ElasticSearch 无法用于全文搜索?