2016-05-19 2 views
1

私は戻ってResults<T>swiftArrayを変換することが可能であろうSwiftソート方法とRealmコンテナを組み合わせるにはどうすればいいですか?

let swiftArray = realm.objects(Parent).sort{$0.children.count > $1.children.count} 

ようレルムResultsコンテナ上スウィフトソートを実行したいと思いますか?残りのコードはRealmコンテナで動作し、すべてをSwift配列に変換するとパフォーマンスが低下する可能性があります。

RealmコンテナでSwiftソート方法を直接使用することは可能ですか?

+0

結果配列にあったオブジェクトにアクセスできないことを理解しています。 結果タイプのswiftArrayを取得したい場合追加: 'として! [THE_TYPE_YOU_WANT] '。 "THE_TYPE_YOU_WANT"を配列が含まれているオブジェクトで置き換えれば、Realコンテナで作業できるはずです。あなたの問題を誤解したかどうか教えてください – AnthonyR

+0

私は両方のタイプにアクセスできます。結果のデータが初期化されているため、デフォルトでこのタイプを使用することをお勧めします。しかし、状況によってはもっと複雑なソートが必要です。このような状況でのみ、データをSwift配列に変換する必要があるようです。残りのコードは結果のデータを期待しているので、私は2つの選択肢があると考えました:1)スウィフト配列を結果に変換するか、2)結果をとSwift配列を同時にサポートするように変更する(結果をに変換する必要はありません)。残念ながら、私はそれをどうやって行うのか分かりません。 – Gerard

+0

[親]にデータをキャストすると、「結果は! '」と入力すると「タイプ' [親] 'の値を代入できません」というエラーが表示されます。私はあなたがこれについて他の考えを持っているかどうか聞いていただければ幸いです。 – Gerard

答えて

0

残念ながら、それは現時点では不可能です。理想的には、.sorted("children.count")を使用してレルムを使用してアイテムを並べ替えることができますが、執筆時点では、レルムはキーパスソートをサポートしていません。

この問題を追跡しているan issue on the Realm GitHubアカウントがあります。そこに行って+1して、他のレルムのエンジニアにあなたが望むことを知らせてください。 :)

ParentモデルオブジェクトにnumberOfChildrenという名前の別のプロパティを追加し、そこに子カウントを格納することが、手動でソートされたSwift配列を作成する現在のソリューションでは受け入れられない場合があります。これは、データをわずかに冗長化し、メンテナンスを少し増やすことを意味しますが、そのプロパティを使用して結果を並べ替えることができます。 :)

+0

私はこの問題をGitHubで認識していませんでしたが、まさに同じ問題です。それはレルムにとって大きな助けになるでしょう!それは私の好みではありませんが、私は確かにしばらくの間、いくつかのデータを冗長に保存することを検討します。 – Gerard

関連する問題