如何获取Core Data中的关系项属性?

假设您有一个名为Workshop的Core Data对象。 它与Student对象具有to-many关系。

我如何在研讨会内创建学生的NSArray?

这些关系通常在NSManagedObject子类中声明为NSSet ,如下所示:

 @property (retain) NSSet* students; 

还有一些特殊的访问方法:

 - (void)addStudentsObject:(NSManagedObject *)value; - (void)removeStudentsObject:(NSManagedObject *)value; - (void)addStudents:(NSSet *)value; - (void)removeStudents:(NSSet *)value; 

NSSets与NSArrays类似,但它们不是有序的,因为Core Data不保证托管对象的特殊排序顺序。

您通常无需创建多对多关系的数组,因为它们无论如何都会自动进入NSSet。 这提供了比arrays更好的灵活性。

但是,如果您需要按特定顺序排序的学生,则可以使用排序描述符来返回已排序的数组。 假设您已经拥有WorkShop实例,并且您希望按降序排序按姓氏排序的学生数组,您可以使用:

 WorkShop *aWorkShop=//... fetch the appropiate WorkShop instances NSSortDescriptor *sort=[NSSortDescriptor sortDescriptorWithKey:@"lastName" ascending:NO]; NSArray *sortedStudents=[aWorkShop.students sortedArrayUsingDescriptors:[NSArray arrayWithObject:sort]];