从NSSet检索NSManagedObject

时间:2011-02-15 15:52:33

标签: ios nsmanagedobject nsset

我有两个实体,它们之间有一对多的关系。保存“many”的实体具有预期的NSSet属性。我不确定如何访问NSSet中的特定元素。 NSSet包含具有多个属性的对象,其中一个属性是currentWeek。我想访问我的NSSet中具有特定currentWeek的对象。

我知道我可以执行FetchRequest来查找它,但我认为使用NSSet有一种更简单的方法。

1 个答案:

答案 0 :(得分:10)

你有两个选择。

NSArray* objectsArray = [yourSet allObjects];

这将使用集合中的所有对象填充objectsArray,此时您可以通过它们枚举来查找所需的对象。

你也可以使用这样的谓词:

NSPredicate *desiredWeekPredicate = [NSPredicate predicateWithFormat:@"currentWeek == %d", currentWeekYouWant];
NSSet *objectsWithDesiredWeek = [yourSet filteredSetUsingPredicate:predicate];

(根据您存储currentWeek的方式,您的谓词会有所不同)。如果每个currentWeek只有一个对象,则可以在objectsWithDesiredWeek set上调用-anyObject来获取对象。如果你可以有多个具有相同currentWeek的对象,那么在objectsWithDesiredWeek上调用-allObjects方法将获得一个包含所有使用所需周的对象的数组。