2017-05-31 14 views
0

私はインストゥームスタイルのフィードを作成し、あなたがフォローしている人々に基づいて投稿にページを設定する方法を見つけようとしています。Firebase Swiftページングのニュースフィード

次のように私のデータが構成されています

posts: 
     user1: 
      post1 
      post2 
     user2: 
      post3 
      post4 
     user3: 
      post5 
      post6 
      post7 

user-following: 
     user1: 
      user2 
      user3 

ポストがポストを作成したユーザーによって組織されているので。私はまた、現在のユーザーが従う人々のための構造を持っています。だから私は、現在のユーザーが続いているユーザーのuidを取得し、投稿セクションに移動し、それらのユーザーからすべての投稿を取得し、各投稿はcreatedAt値を持っています。

私はqueryByChild( "createdAt")を使用すると、ユーザーごとのデータをソートしますが、絶対にそうではありません。 これは、データをチャンクに入れてから絶対ソートするのではなく、user2の投稿、次にuser3の投稿を並べ替えます。

ニュースフィードの投稿を所有するユーザーとは関係なく、最新の投稿全体が必要です。私はスナップショットのすべての投稿情報を得ることができますが、そのスナップショットを並べ替える方法はありますか?私はデータベースにチャンクではなく全体として情報を並べ替える方法を見つけ、そのソートされたリストから最新の「x」分のポストを取り出す必要があります。

それ以外の場合は、私は自分のプログラムにすべてをプルしてから、配列でソートしてから、最も最近の「x」分のページを配列のページング用に引き出す必要があります。 1000件の記事がある場合は、大量のデータをプルするとアプリのスーパーが遅くなり、クラッシュする可能性があります。助言がありますか?私の意見で

+0

Firebaseのドキュメントは非常に役に立ちます。 * [queryLimitedToLast]:最後から返されるアイテムの最大数を設定する[iOS上のデータのリストを処理する](https://firebase.google.com/docs/database/ios/lists-of-data)を参照してください。 *この場合、これを15に設定します。これは、15の最新の投稿を返します。将来はFirebase構造(TEXT)とともに問題のあるコードを質問に含めてください。 [最小限で完全で検証可能なサンプルを作成する方法](https://stackoverflow.com/help/mcve) – Jay

+0

@Dirtyを確認することができます。Jayが返信を見たい場合は、「@Jay」をコメント –

+0

@Jayご返信ありがとうございます。私の問題は少し深くなり、ユーザーが従う人の投稿を取得する必要があります。そのため、クエリは各ユーザーがチャンク内に投稿してから次のユーザーに移動するなどして、すべてのデータが観察されたらチャンクで並べ替えられることはありません。投稿が絶対にソートされるのではなく、個々のユーザーだけがソートします。スナップショットで一度にすべてのデータを一度に取得してソートし、最後の15個を取得する方法はありますか? – Dirty

答えて

0

ここでは唯一の方法は次のとおりです。

1)あなたは

2に従うことを、各ユーザー通過します)日付によって最後X投稿

3)ソート結果の配列を取得

4)最後にXの結果配列があります。

あなたはtable view持ちの場合:あなたはこの配列を格納し、それからの投稿を取得する必要があり、無限スクロールを行うには

を。

ポストのリフレッシュ - リロード時の配列。

私は同じ構造を持っています。私はそれが唯一の方法だと考えています。

希望し、それが助かります

+0

返信いただきありがとうございます。しかし、それでも問題は解決しません。各ユーザーからの最後の「x」投稿を取得することは、あなたが従うすべてのユーザーから最新の投稿を取得するという要件を満たしません。あなたが500人をフォローしているとすれば、500人のユーザーのうち最も最近の投稿を特定する方法がないため、すべてのユーザーから最後の「x」投稿を取得して取得することはできません。この構造のページネーションは火災ベースで実行できませんか? – Dirty

+0

@Dirty投稿のノードのIDをどのように生成するのですか?私は同じ構造を持っています、私はchildByAutoIdを使用しています。私はテーブルビューで無限にスクロールしました。このalghorithmで –

+0

私はchildByAutoIdも使用します。あなたはこの問題を解決しましたか?私は無限のスクロールが何であるか分からないが、もしあなたがこれを理解したら、それをどうすればいいか教えてください! – Dirty