私は、Swift 2.2でiOS 8をターゲットとし、レルムを使用しているアプリを書いています。 Results.sorted(_:ascending:)
を使用して、さまざまなオプションのプロパティに基づいてオブジェクトを並べ替えることができます。これは降順ソートではうまく動作しますが、昇順ソートの場合は、最初にnil
という値が配置され、正しく表示されません。多くのデータベースシステムにはNULLS FIRST/LAST
オプションがあり、CoreDataではsubclass NSSortDescriptor
のように見えます。レルムで並べ替えるときにいつも最後にnil
値を入れる方法はありますか?たとえハッキーな戦略しかないとしても、それは高く評価されます。レルムスウィフト:常に最後にnil値を並べ替えます
5
A
答えて
4
レルムは、Results.sorted(_:ascending:)
メソッドが提供する以外のカスタムソートのResults
をサポートしていません。ほとんどの場合、私のデータソースがすでに持つことないので、私の場合は
var results: [MyModel] {
let sorted = realm.objects(MyModel).sorted("...", ascending: true)
return sorted.filter("optionalProperty != nil") +
sorted.filter("optionalProperty == nil")
}
0
、複数のクエリが困難だっただろう。しかし、あなたは多分、計算プロパティを使用していることを暴露する、2つのクエリを連結することで比較的簡単にこの自分を構成することができます他の並べ替えの優先順位と私は1つの状況でこのカスタムの並べ替えが必要です。数百から数千の結果が得られる可能性も非常に高いですが、結果を連結して記憶し続けるのではないでしょう。これは理想的ではないながら
だから、私が保存されstartDate: Date?
とhasStartDate
プロパティを更新するカスタムセッターで計算プロパティdate: Date?
によって自動的に更新されhasStartDate: Bool
プロパティを保存することにしました。 hasStartDate
もオブジェクトの初期化子に設定されています。
これは私が使用することができます:
realm.objects(SMItem.self).filter(predicate).sorted(by: [
SortDescriptor(keyPath: "hasStartDate", ascending: false),
SortDescriptor(keyPath: "startDate", ascending: true)
])
これはstartDate
せずにオブジェクトが続くstartDate
昇順、持つオブジェクトを返します。
関連する問題
- 1. クローゼットで日付を最初に並べ替え、最後に最後の日付を並べ替えます
- 2. 0を常に最後に並べ替え(昇順と降順の並べ替えの両方で)可観測配列を並べ替えます。
- 3. 並べ替え前と並べ替え後の値のストリーム
- 4. 常にNSTableViewを並べ替え
- 5. パンダ:最大値で並べ替え列
- 6. グループの最大値で並べ替え
- 7. MultiDimensional Arrayを0で最後の数値で並べ替える最後の
- 8. IOS - 並べ替えの後ろに隠れたタブ並べ替えタブコントローラ
- 9. データフレームの列を最後の列に並べ替える方法
- 10. 配列の最小値と最大値を並べ替える
- 11. 最小値と最大値の配列を並べ替える
- 12. 値ごとにJqueryを並べ替え
- 13. 最初にElasticSearchで並べ替え
- 14. 最終使用順に並べ替え
- 15. 選択並べ替え並べ替え
- 16. 並べ替えで並べ替え
- 17. ファイルを並べ替えるツリーを並べ替えます
- 18. ピボットグラフ値で並べ替え
- 19. [並べ替え基準値
- 20. Railsドロップダウンリスト並べ替え値
- 21. 日付で並べ替え昇順でnulls最後に
- 22. ルートカテゴリ別にカテゴリの並べ替えを並べ替え
- 23. MarkLogic node.js api - グループを並べ替え、並べ替えで並べ替え
- 24. 値に基づいた並べ替え
- 25. ソートで数値的に並べ替え
- 26. VBA - ドラッグ&ドロップによる並べ替えの並べ替え
- 27. 並べ替え優先度に基づいて並べ替え
- 28. .Net DataTable量による並べ替え/並べ替え
- 29. Laravel 4.2並べ替えの関係による並べ替え
- 30. JavaFx:最初/最後の列の並べ替えを無効にする