2016-12-13 3 views
0

私はRealmSwiftを使用する初心者です。私はrealmSwiftとしてバックエンドデータベースを持つswift 3.0を使用してアプリケーションのようなチャットを作成しています。チャットを挿入しながら領域への良好な動作しますが、事のレコードを取得RealmSwiftはテーブルビューに最後の30レコードを制限して取り込みます

let newChat = uiRealm.objects(Chats.self).filter(
    "(from_id == \(signUser!.user_id) 
     OR from_id == \(selectedList.user_id)) 
     AND (to_id == \(signUser!.user_id) 
     OR to_id == \(selectedList.user_id))" 
).sorted(byProperty: "id", ascending: true) 

iは、チャットの会話のための最後の30件のレコードを制限する方法がわかりません。上記のコードでは、私はちょうど "SIGNED USERIDとUSERID"としてチャットをフィルタリングして "チャット"テーブルからレコードをフェッチします。また、特定のチャットのすべてのレコード(150以上のチャットの会話のような)をリストすると、tableviewからレコードをスクロールアップしてしまったり、しばらくの間ハングアップしたりします。だから、最後の30レコードを制限し、テーブルビューを止める方法についていくつか考えてください。事前に感謝します

+0

あなたはhttps://realm.io/docs/swift/latest/#limiting-resultsを読んでいますか? – EpicPandaForce

+0

ええ、私はそれを読んでいますが、実際には私は合計60レコードを持っている場合、私は最後の30の意味は31番目のレコードから60番目のレコードを意味します。問題は、私が最後のレコードが60であることを知っていたので、初期値を与える方法です –

答えて

0

私はin the Realm documentationと書いていますが、Realm Resultsオブジェクトは遅延ロードされているので、すべてのオブジェクトを照会して必要なオブジェクトをロードするだけで問題はありません。

テーブルビューに並べる場合は、最後の30個の結果を0-30のインデックス範囲にマップする補助メソッドを作成すると、テーブルビューのデータソースに直接渡すのが簡単になります:あなたはすでに正常に照会して(つまり、クエリ自体がハングアップしませんでした)、これらのオブジェクトへのアクセスを開始した場合、テーブルビューは、事実の後にハングアップする理由

func chat(atIndex index: Integer) -> Chats { 
    let mappedIndex = (newChat.count - 30) + index 
    return newChat[mappedIndex] 
} 

、私はわかりません。タイムプロファイラをInstrumentsで実行すると、メインスレッドがブロックされている原因を正確に突き止めることができます。

関連する問題