Realm

Realm基本を再びまとめる(6)

もう一度Realmの基本について覚え書きのためにまとめ。
今回は検索について簡単に。
クエリーについての公式サイトで

モデル

基本的なクエリ

最終結果を返す

  • findAll 検索対象のオブジェクトを全件返します
  • findAllAsync 検索対象のオブジェクトを非同期で全件返します
  • findAllSorted, fndAllSortedAsync 検索対象を特定のフィールドで並び替えて返す。あるいは非同期で返す
  • findFirst, findFirstAsync 検索対象を1件だけ返す。あるいは非同期で返す

フィルタ

全データ型で使える

  • equalTo 等しい
  • notEqualTo 等しくない
  • in 含む

数値のフィールドで使える

  • between 範囲指定(境界値を含む)
  • greaterThan >
  • lessThan <
  • greaterThanOrEqualTo >=
  • lessThanOrEqualTo <=

文字列で使える

  • contains 含む
  • beginsWith 始まる
  • endsWith 終わる
  • like マッチさせる

他にも

  • isEmpty
  • isNotEmpty
  • isNull
  • isNotNull

チェーンでつなぐと基本的にANDですが、ORにもできる

その他

  • sort(“カラム名”) 並び替え昇順
  • sort(“カラム名”,Sort.DESCENDING) 並び替え降順
  • distinct(“カラム名”) 重複排除
  • sum(“カラム名”) 合計(集計関数みたいな)
  • average(“カラム名”) 平均
  • size(“カラム名”) 件数

こんな感じ。

Realm基本を再びまとめる(5)

もう一度Realmの基本について覚え書きのためにまとめ。
今回は非同期な書き込みについて初歩的なやりかたの覚え書き

非同期な書き込み

書き込み時にはトランザクションを行いますが、その間はUIスレッドを待機状態にさせてしまうことになります。それを避けるためにバックグラウンドで書き込み処理を行う必要があります。※とはいえ、基本的にはかなり高速で書き込めるので、待機状態を実感するのは難しいかも。

問題点を見ている

当然なのですが、スレッドをsleepさせてみるとわかります。書き込み待機中に画面の操作ができません

Realmで提供されているやり方

更新サイトを参考

こちらでも、あえて待機処理をしていますが、その間もUIスレッドを操作できます

自作でもいいような

簡単にするなら自作でもいいような気がします。ですが、RealmのAPIを利用した場合、キャンセル処理などができますね。

Happy Realm Database!

Realm基本を再びまとめる(4)

もう一度Realmの基本について覚え書きのためにまとめ。
今回は書き込みについて初歩的なやりかたの覚え書き

追加と更新

オブジェクトの追加、更新を行うためにはトランザクションで囲む必要がある

基本的な書き方

Realmオブジェクトを事前に生成する

Listを使って複数オブジェクトをinsertOrUpdate

とりあえず、ここまで。