NSOrderedSetsは、テーブル内のオブジェクトの順序を保存します。 NSOrderedSetであるプロパティを持つNSManagedObjectサブクラスインスタンスにアクセスすると、それらは順番になります。NSOrderedSetの順序を使用してNSFetchedResultsControllerの結果を並べ替える方法
しかし、NSFetchRequestを作成するときにNSSortDescriptorを使用してその順序にアクセスする方法はありません。
生のSQLite DBからは、その順序がZ_FOK_<relationship name>
という名前のフィールドに格納されているようです。データは利用可能ですが、コアデータAPIからは表示されません。
NSOrderedSetで指定された順序で結果を返すためにSQLite DBで動作するNSSortDescriptorを書く方法を知っている人はいますか?
更新
関連質問:NSFetchedResultsController and NSOrderedSet relationships
これも私の見ているようです... NSFetchedResultsControllersがその注文を利用できるように、NSSortDescriptorには特別なサポートがないとは思えませんでした。さもなければ、開発者はNSOrderedSetの目的をある程度排除する "sortOrder"プロパティを追加し、手動で管理する必要があります。 –
@CoreyFloyd: 'B 012'オブジェクトの順序が完全に異なるので、' A1 <-->> B'と 'A2 <-->> B'という2つの順序関係を持つことができるので、"順序付けられた関係に従ってソートされたBオブジェクトを取得する "とにかく曖昧です。 –
ソート記述子を使用してNSFetchRequestを作成する必要があります。しかし、ソート記述子なしで(カテゴリ、サブクラスなどを使用して)ソートを作成する方法があれば、フェッチ要求を実行したときにNSOrderedSetのデフォルトになります。おそらく未定義の振る舞いですが、ショットに値する可能性があります。 –