2016-10-31 3 views
0

ユーザーが彼の下にネストされた投稿を持っているとし、そのユーザーの投稿のいずれかが変更されると、彼に知らせる必要があるとします。私はユーザ/投稿にオブザーバーを配置しましたが、私の懸念はドキュメントを介して行われています。この結果、1つが変更されるたびにすべての投稿が返されます。これは確かに事実ですか、あるいは変更されたポストだけがネットワークを介して来ますか?私は正しいですし、ユーザーはネットワーク上の任意の時間に来てすべての記事をデータのために支払う必要がある場合はFirebase DB:オブザーバーをポストに配置すると、1つのポストに変更があるたびに、ネストされたすべてのポストが返されますか?

ref.child("users/\(currentUserId)/posts").observe(FIRDataEventType.value, with: {[weak weakSelf = self](snapshot) in 
     weakSelf?.allpostModel.hasFetched = true 
     if let fetchedPosts = snapshot.value as? [String : [String : Any]]{ 
      weakSelf?.allPostsModel.postsJSON = fetchedPosts 
     } 
    }) 

は、この実装では、単一のポストの変更は、その後、何がよりよい解決策でしょうか?すべての投稿にオブザーバーを配置し、ポストIDをキーとして簡単に更新できる投稿モデルで辞書を作成しますか?

答えて

0

Firebaseデータベースクライアントは、同期するデータの量を最小限に抑えようとします。いくつかのオーバーヘッドが存在する可能性がありますが、一般的には既にデータを取得していないという点ではうまくいくでしょう。

しかし、あなたのコードはまだ変更が何であるか把握する必要があります。 .childAdded,.childRemoved.childChangedなど、子イベントに応答すると、はるかに簡単な時間が得られます。これらのイベントに応答すると、UIの最小更新も簡単に実行できます。

関連する問題