核心数据 - 如何在不触发故障的情况下检查对象关系是否存在

时间:2013-11-16 13:18:27

标签: objective-c core-data relationship fault nsvaluetransformer

有一个对象A和一个对象B.对象B有一个属性是可转换的类型(图像),一个关系是对象A.对象A 可以有关系只有一个,对象B,或者它可能没有。

当我通过我的对象A数组枚举时,我想检查每个对象A是否有一个对象B.但是,我不想为对象B(它将调用反向imageToData NSValueTransformer)触发错误。我只是想知道它是否存在。如何在不将对象B放入内存的情况下执行此操作?

2 个答案:

答案 0 :(得分:7)

我认为你可以试试

if (objectA.relationshipToB != nil) ...

这不会触发相关B对象的错误,因为您没有访问其属性

答案 1 :(得分:0)

在斯威夫特,我得到了一个

  

找不到接受提供的参数

的'!='的重载

错误。我的关系已正确标记为可选但在生成的NSManagedObject我的@NSManaged媒体资源中没有?。因此针对nil的此检查失败了。我添加了?然后我可以检查是否存在这种关系。

之前(不起作用)

@NSManaged var myRelationShip: MyClass

之后(工作)

@NSManaged var myRelationShip: MyClass? // <--- Added `?`