我已使用CoreData将数据保存到数据库中。我需要以保存的顺序从我的表中获取数据。在内部表中,它由Z_PK订购 - 隐藏的CoreData密钥。我该如何创建这样的排序描述符。如果我使用没有排序描述符的获取请求,我的数据对象的顺序错误。
答案 0 :(得分:6)
Core Data框架未向您展示的任何内容都是实现细节。 Z_PK
存在且目前适合您的目的的事实不能依赖。
如果创建/保存顺序对您的模型很重要,那么它应该包含在您的模型中。真的没有其他的东西。
答案 1 :(得分:4)
核心数据框架中没有适当的方法来按主键对对象进行排序,但我认为我们可以使用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;
}
希望这会有所帮助
答案 2 :(得分:0)
使用带有self
作为排序键的排序描述符。基础SQL将具有ORDER BY t0.Z_PK
。