iphone - 核心数据 : How to sort NSManagedObject by its primary key?

标签 iphone objective-c core-data

我有一个 NSManagedObject 的子类,如下所示 并通过 NSManagedObjectContext 存储一些实例。

@interface SomeModelObject : NSManagedObject  
  @property (nonatomic, retain) NSString * text; 
@end

Now, I want to fetch the list sorted by its primary key (created automatically). I've tried NSFetchRequest and got runtime error: "keypath id not found in entity".

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"SomeModelObject" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];

NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"id" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sort, nil];
[fetchRequest setSortDescriptors:sortDescriptors];

是否可以按主键排序?还是应该在 Model 类中添加一些列进行排序?

最佳答案

鉴于主键是一种不透明的数据类型,其值是完全不受您控制的任意实现细节(包括可能不会随时间变化),因此想要按它排序似乎没有意义。

如果您正在寻找稳定、确定的顺序,那么——是的——按不同的属性排序,可以是现有属性,也可以是新属性。

请注意,一般来说,最好不要从关系数据库的角度考虑 Core Data。关注对象图和对象建模方面,因为这是 API 所关注的。

关于iphone - 核心数据 : How to sort NSManagedObject by its primary key?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3120136/

相关文章:

iphone - xcode - 使搜索栏出现/消失

iphone - 如何让 UITableView 始终位于 UIView 的中心?

ios - SKAction playSoundFileNamed 在接到两个连续的电话后不起作用

iPhone:将 boolean 值保存到核心数据中

iphone - 拖动注解 View 导致多次触发拖动状态委托(delegate)方法

iphone - iOS 4.2 不允许 MKMapView 在另一个线程中初始化

objective-c - 按下自定义单元格文本标签时,didSelectRowAt Index 不会触发

objective-c - 将 UIView 捕获为 UIImage

swift - 当不为零时我如何获取 CoreData 属性

iPhone Core 数据驱动搜索 : How To, 资源?