cal*_*leb 8 cocoa cocoa-touch core-data objective-c ios
我正在编写一个API方法,它返回Web服务中的对象列表.此服务还会缓存结果并尝试在再次访问Web服务之前返回缓存的结果(如果有).所以我将此列表存储在Core Data实体中.但是Core Data只允许将to-may关系存储在NSSet中,而NSSet不会保留顺序.但我希望缓存的结果保留原始顺序(最初来自Web服务).我不一定知道该命令是如何建立的(因此我无法排序).
那我怎么能保留这个订单呢?我的计划是存储一个带有对象id的字符串,我稍后可以使用它来对它们进行排序:
NSString *objectIds = @"1 5 2 9 4";
Run Code Online (Sandbox Code Playgroud)
这是最好的方法吗?
Seb*_*lis 10
如果您可以定位iOS 5,那么您可以将新的NSOrderedSet功能用于任意排序的Core Data关系.有关此新功能的详细信息,请参阅iOS 5的核心数据发行说明.
如果您必须支持iOS 4,那么您需要自己处理订购.执行此操作的常用方法是向模型添加整数属性,然后您需要自行管理.然后,您可以在获取数据时对此属性进行排序.
将订单存储在完全不同的字符串中似乎是错误的方法.如果排序很重要,这个信息应该在模型中,并且用户应该能够直接查询它("给我这个特定列表的前五个对象",或"对象foo的索引是什么").必须获取一串对象ID,解析它,然后查询某些对象ID对我来说是非常错误的.