2017-05-02 7 views
0

問題があります:最新のCouchbase Mobile Solutionに加えて、XcodeとSwiftを使用しています。 Observerを登録してそれを聞くためにString "行"を使用すると、LiveQueryも完全に機能します。しかし、私は2つのライブクエストが必要な私のアプリでビューを持っています。そこで私は2つの異なるキーパス、例えば最初の "getTopicComments"と2番目の "getTopicDetails"を使って2つのライブクエリを作成しようと考えました。しかし、私が言ったように、それはキーのパス "行"のためにのみ動作します。私はsthを誤解していますか?なぜ私はそれが別のStringで動作しないのか全く分からないからです。私の意見では、couchbaseのドキュメントを読むと、ライブクエリを登録するときにどのStringを使用するかは関係ありません。Couchbase LiveQueryは "行"以外のキーパスでは機能しません

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") { 
} 
} 

答えて

0

"行" はCBLLiveQueryにKVO観測可能な特性です。そのため、オブザーバーを追加してKVO通知を探すことができます。ライブクエリの背後にあるアイデアは、クエリの結果に影響を与えるデータベースへの変更をアプリケーションに自動的に通知できることです。データベースが更新されると「行」プロパティが更新されます。そのため、このプロパティに変更が通知されていることがわかります。上記で追加したkeyPathはCBLLiveQueryには存在しないため、通知は表示されません。

+0

ありがとうございます! –

関連する問題