核心数据故障排序NSSet的相关对象

时间:2011-04-05 18:08:57

标签: objective-c cocoa-touch core-data ios4

新手核心数据:

考虑到患者,我想列出该患者的所有过敏症。

实体Patient在对象模型中定义了多对多关系allergies

子实体Allergy具有反向关系patient也已定义。

Allergy有一个属性description,其值为NSString。

我希望得到allergies关系返回的NSSet,按description排序,并放入一个将映射到表视图的数组实例变量。

代码:

NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"description" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];  
NSSet *unorderedAllergies = [selectedPatient valueForKey:@"allergies"];  
NSArray *sortedArray = [unorderedAllergies sortedArrayUsingDescriptors:sortDescriptors];  
[allergiesArray addObjectsFromArray:sortedArray];

注意:selectedPatient是从前一个控制器传入的父NSManagedObject Patient的实例变量。 allergiesArray是我想要映射到表视图的数组。

问题发生在:

NSArray *sortedArray = [unorderedAllergies sortedArrayUsingDescriptors:sortDescriptors]; 

调试器在此行显示EXEC_BAD_ACCESS,应用程序崩溃。我的猜测是它与Core Data懒惰加载的相关对象(即“故障对象”)有关。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

description是NSObject的方法名,返回描述该对象的字符串。它是使用NSLog记录对象时调用的方法。从NSObject继承的所有类都已经有description方法。

不要将description用作属性或属性名称,因为您可能无法获得预期效果。使用allegryDescription或类似的东西将属性名称更改为不会发生冲突的内容。