CoreData: How to sort NSManagedObject by its primary key?

后端 未结 2 1885
心在旅途
心在旅途 2021-01-14 01:02

I have one subclass of NSManagedObject like following and stored some instances by NSManagedObjectContext.

@interface SomeModelObject : NSManagedObject  
  @prop         


        
相关标签:
2条回答
  • 2021-01-14 01:36

    Given that the primary key is an opaque data type whose value is an arbitrary implementation detail completely outside of your control (including potentially not being constant over time), it seems non-sensical to want to sort by it.

    If you are looking for a stable, determined, order, then -- yes -- sort by a different attribute, either an existing one or a new one.

    Note that, in general, it is best to not think of Core Data in relational database terms. Focus on the object graph and object modeling aspects as that is what the APIs are focused upon.

    0 讨论(0)
  • 2021-01-14 01:54

    Use a sort descriptor with self as the sort key (instead of id). The underlying SQL will have ORDER BY t0.Z_PK.

    Warning: as mentioned by vastopa below this is undocumented and crashes in iOS 10, and there is also a non-null probability that this breaks in a future version of iOS, so use at your own risk.

    0 讨论(0)
提交回复
热议问题