2

CoreData を使用してデータを db に保存しました。保存されたのと同じ順序でテーブルからデータを取得する必要があります。テーブル内では、Z_PK (非表示の CoreData キー) で並べ替えられています。このようなソート記述子を作成するにはどうすればよいですか。ソート記述子なしでフェッチ要求を使用すると、データ オブジェクトの順序が間違っています。

4

3 に答える 3

7

CoreDataフレームワークによって公開されていないものはすべて実装の詳細です。存在し、現在あなたの目的に合っているという事実はZ_PK信頼できません。

作成/保存の順序がモデルにとって重要である場合は、それをモデルに含める必要があります。本当に他に何もありません。

于 2012-10-18T12:26:28.723 に答える
5

コア データ フレームワークには、オブジェクトを主キーで並べ替える適切な方法はありませんが、objectID を主キーとして使用し、objectID で並べ替えることができると思います。特定のオブジェクトのObjectIDは常に増加します..したがって、以下のメソッドを使用できます

/*!
@param <NSManagedObject> array 
@return <NSManagedObject> sortedarray
*/

+ (NSArray *) sortManagedObjectArrayByObjectID:(NSArray *) array {

    NSArray *compareResult = [array sortedArrayUsingComparator:^NSComparisonResult(NSManagedObject *obj1, NSManagedObject *obj2) {

        NSString *s = [obj1.objectID.URIRepresentation lastPathComponent];
        NSString *r = [obj2.objectID.URIRepresentation lastPathComponent];
        return [s compare:r];

    }];

    return compareResult;

}

これが役立つことを願っています

于 2012-11-14T17:08:35.720 に答える
1

ソートキーとしてソート記述子を使用しselfます。基礎となる SQL にはORDER BY t0.Z_PK.

于 2018-10-18T19:49:00.883 に答える