1

FetchedResultsController を使用してフェッチを実行していますが、オブジェクトを降順で並べ替えたいと考えています。NSSortDescriptor を作成するときにカスタム コンパレータ ブロックを使用すると、エラーが発生します'unsupported NSSortDescriptor (comparator blocks are not supported)'。アイテムを取得して配列に格納し、並べ替えてから使用したくありません。これは、FetchedResultsController を使用する目的に反するからです。降順でソートする NSSortDescriptor を作成するにはどうすればよいですか?

また、NSSortDescriptor のフレームワークには、実際には使用できない場合でもコンパレータ ブロックの使用を許可するメソッドさえあるのはなぜですか? それとも、fetchrequests に使用できないだけですか?

4

1 に答える 1

1

NSSortDescriptor のブロック ベースのメソッドは、sqlite ストアではサポートされていません。永続ストアのドキュメント ( https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CoreData/Articles/cdPersistentStores.html ) には次のように記載されています。

一方、SQL ストアは述語とソート記述子を SQL にコンパイルし、データベース自体で結果を評価します。これは主にパフォーマンスのために行われますが、Cocoa 以外の環境で評価が行われることを意味するため、Cocoa に依存するソート記述子 (または述語) は機能しません。

-[NSSortDescriptor sortDescriptorWithKey:ascending:] メソッドを使用する必要があります。

ブロックベースの方法は、配列やその他のメモリ内オブジェクトのソートに使用できます。オブジェクトは技術的にもメモリ内にあるため、メモリからはバイナリコアデータストアだと思います

于 2013-09-20T23:39:11.780 に答える