8

'transient'フィールドなどを使用し、NSFetchedResultsControllerを使用して何らかの方法で並べ替える方法はありますか。私は次のことをしたい:

データベースに場所の場所があります。人がリストを開いたら、一番近い場所を一番上に表示し、距離に応じて並べ替えます。しかし、明らかに、これはユーザーの場所に依存するため、静的フィールドを使用することはできません。セクションヘッダーに使用できるので、一時的なフィールドを使用したいと思っていました。

この状況の解決策や回避策を提供できる人はいますか?

4

1 に答える 1

12

SQliteベースのCoreDataストアのフェッチリクエストで一時的なプロパティを使用することはできません。

『Core Dataプログラミングガイド』の「管理対象オブジェクトのフェッチ」を参照してください。

一時プロパティに基づく述語を使用してフェッチすることはできません(ただし、一時プロパティを使用して自分でメモリをフィルタリングすることはできます)。...要約すると、フェッチを直接実行する場合は、通常、Objective-Cベースの述語やソート記述子をフェッチ要求に追加しないでください。代わりに、これらをフェッチの結果に適用する必要があります。

に一時プロパティを使用できますがsectionNameKeyPath、それでも、永続属性に基づくセクションの最初の並べ替え記述子が必要です。

したがって、唯一の回避策は、おそらくすべてのオブジェクトをフェッチしてから、フェッチされた配列を並べ替えることです。しかし、もちろん、フェッチされた結果コントローラーの利点はもうありません。

于 2012-11-10T21:40:44.047 に答える