2

我已经使用 CoreData 将数据保存到数据库中。我需要以与保存数据相同的顺序从我的表中获取数据。在表内,它按 Z_PK 排序 - 隐藏的 CoreData 键。我怎样才能创建这样的排序描述符。如果我使用没有排序描述符的获取请求,我的数据对象的顺序错误。

4

3 回答 3

7

Core Data 框架未向您公开的任何内容都是实现细节。存在且当前适合您的目的的事实是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

使用排序描述符 withself作为排序键。底层 SQL 将具有ORDER BY t0.Z_PK.

于 2018-10-18T19:49:00.883 回答