核心数据麻烦排序相关对象的 NSSet
Posted
技术标签:
【中文标题】核心数据麻烦排序相关对象的 NSSet【英文标题】:Core Data trouble ordering NSSet of related objects 【发布时间】:2011-04-05 18:08:57 【问题描述】:这里是核心数据的新手:
给定一位患者,我想列出该患者的所有过敏症。
实体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】:description
是 NSObject 的方法名,返回一个描述对象的字符串。它是使用 NSLog 记录对象时调用的方法。从 NSObject 继承的所有类都已经有一个description
方法。
不要将description
用作属性或属性名称,因为您可能无法得到预期的结果。使用allegryDescription
或类似名称将属性名称更改为不会发生冲突的名称。
【讨论】:
+1 好收获。我想每个人都会在某些时候被这个问题所困扰——“描述”是一个属性的自然名称。 我同意。很棒的收获。谢谢!以上是关于核心数据麻烦排序相关对象的 NSSet的主要内容,如果未能解决你的问题,请参考以下文章