【问题标题】:Couchbase LiveQuery doesn't work with other keyPath than "rows"Couchbase LiveQuery 不适用于“行”以外的其他 keyPath
【发布时间】:2017-05-02 15:53:03
【问题描述】:

我有一个问题:除了最新的 Couchbase 移动解决方案外,我还使用 Xcode 和 Swift。如果我使用字符串“rows”来注册观察者然后收听它,LiveQuery 也可以完美运行。但是我在我的应用程序中有一个视图,我需要两个实时查询。所以我打算用两个不同的关键路径进行两个实时查询,例如第一个“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") {
}
}

【问题讨论】:

    标签: ios swift couchbase livequery nosql


    【解决方案1】:

    “rows”是CBLLiveQuery 上的 KVO 可观察属性。这就是为什么您可以添加观察者并查找 KVO 通知的原因。实时查询背后的想法是,应用程序可以自动通知影响查询结果的数据库更改。 “rows”属性将在数据库更新时更新,这就是您观察此属性以了解更改的原因。您在上面添加的 keyPaths 在 CBLLiveQuery 中不存在,因此您不会看到任何通知。

    【讨论】:

      猜你喜欢
      • 2011-01-23
      • 1970-01-01
      • 1970-01-01
      • 2014-11-20
      • 1970-01-01
      • 1970-01-01
      • 2020-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多