2017-05-02 3 views
0

J'ai un problème: j'utilise Xcode et Swift en plus de la dernière solution Couchbase Mobile. LiveQuery fonctionne également parfaitement, si j'utilise la chaîne "rows" pour enregistrer l'observateur et l'écouter ensuite. Mais j'ai une vue dans mon application, où j'ai besoin de deux livequerys. J'avais donc l'intention de faire deux livequeries avec deux chemins clés différents, par exemple le premier "getTopicComments", et le second "getTopicDetails", donc je pourrais les différencier comme ci-dessous. Mais comme je l'ai dit, cela ne fonctionne que pour les "lignes" du chemin clé. Suis-je mal comprendre sth? Parce que je ne comprends absolument pas pourquoi ça ne marche pas avec une autre chaîne. À mon avis et comme je l'ai lu dans la documentation de couchbase, il ne devrait pas être pertinent quelle chaîne j'utilise lors de l'enregistrement de la requête en direct.Couchbase LiveQuery ne fonctionne pas avec d'autres keyPath que "rows"

liveQueryOne.addObserver(self, forKeyPath: "getTopicComments", options: .new, context: nil) 
liveQueryTwo.addObserver(self, forKeyPath: "getTopicDetails", options: .new, context: nil) 

et

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { 
if (keyPath == "getTopicComments") { 
} else if (keyPath == "getTopicDetails") { 
} 
} 

Répondre

0

"lignes" est une propriété observable KVO sur CBLLiveQuery. C'est pourquoi vous pouvez ajouter un observateur et rechercher des notifications KVO. L'idée derrière les requêtes en direct est que l'application peut être automatiquement averti des modifications apportées à la base de données qui affectent les résultats de la requête. La propriété "rows" sera mise à jour lors de la mise à jour de la base de données et c'est pourquoi vous observez cette propriété pour être informé des modifications. Les keyPaths que vous avez ajoutés ci-dessus n'existent pas dans CBLLiveQuery, donc vous ne verrez aucune notification.

+0

merci beaucoup pour votre réponse! –