如何通过关系访问coredata托管对象的有序列表?

时间:2011-12-05 00:10:40

标签: iphone objective-c ios core-data nsset

如何通过关系访问coredata托管对象的有序列表?

那是:

  • 具有以下实体:LIST,LIST_ITEM(包括“订单”字段)和ITEM。
  • 假设我已经提取了我想要使用的列表
  • 然后我可以使用coredata关系通过使用关系来获取LIST_ITEMS:例如“list1.listItems”,然后对于每个LIST_ITEMS,我都可以获得ITEM(“listItem1.item”)

但是,如果我真的只想从LIST中根据LIST_ITEM中的“订单”字段从列表中找到一个有序的ITEMS列表,那么最简单的方法是什么?

2 个答案:

答案 0 :(得分:2)

您可以使用NSSortDescriptor对关系返回的项进行排序,就像在常规提取请求中一样。例如:

NSSortDescriptor *sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"order" ascending:YES] autorelease];
NSArray *sortedListItems =  [list1.listItems sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];

此处的关键方法是[NSSet sortedArrayUsingDescriptors:]

答案 1 :(得分:1)

我认为我正确理解了这个问题,但我认为从CoreData获取列表的最佳方法是创建一个compoun谓词,然后以这种方式搜索项目。例如,如果我在特定日期仅针对特定用户(另一个实体)查找事件(实体)。然后我可以为Event条目创建一个NSFetchRequest,并以(user.name ==%@)AND(event.date ==%@)的形式指定和NSPredicate,指定用户的姓名和日期