【问题标题】:Core Data trouble ordering NSSet of related objects核心数据麻烦排序相关对象的 NSSet
【发布时间】: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 延迟加载的相关对象(即“故障对象”)有关。

非常感谢任何帮助。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • +1 好收获。我想每个人都会在某些时候被这个问题所困扰——“描述”是一个属性的自然名称。
    • 我同意。很棒的收获。谢谢!
    猜你喜欢
    • 2011-01-26
    • 1970-01-01
    • 2016-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多