使用添加的谓词遍历核心数据对象图?

时间:2010-07-15 03:11:57

标签: objective-c core-data

我想加载一个客户对象,然后根据它们是否已被放置来提取相关的采购订单,采购订单具有IsPlaced BOOL属性。

所以我有我的客户对象,我可以得到这样的所有采购订单,这很有效:

purchaseordersList =[[myclient.purchaseorders allObjects] mutableCopy];

但理想情况下我实际上会喜欢2个数组 - 每个订单类型一个:IsPlaced = YES和IsPlaced = NO

我在这里怎么做?或者我是否需要再次获取?

1 个答案:

答案 0 :(得分:0)

首先,没有理由将该集合转换为数组,除非您对它进行排序,并且没有理由将该数组转换为可变数组。你从一些示例代码中得到了吗?

其次,您可以使用谓词过滤数组或集合,以便通过以下方式轻松创建两个集合(或数组):

NSSet *placed = [[myclient purchaseorders] filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"isPlaced == YES"]];
NSSet *notPlaced = [[myclient purchaseorders] filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"isPlaced == YES"]];

如果您想将其用于UITableView,请转而查看NSFetchedResultsController。它将为您节省大量的锅炉代码。

你还记得你从中得到的示例代码吗?最近一直看到-mutableCopy很多,并且希望能够将它取消。 :)