Pro*_*ody 25 iphone cocoa-touch core-data
我正在开发一个Cocoa-Touch应用程序,它使用CoreData并且有一些由XCode模型编辑器生成的NSPersistentObject子类.
我注意到最近,当保存上下文时,我得到一个错误,其中包含以下部分的用户信息:
(gdb) po ui {
"Dangling reference to an invalid object." = <null>;
NSAffectedObjectsErrorKey = <dump #1 of someObject>;
NSLocalizedDescription = "Operation could not be completed. (Cocoa error 1550.)";
NSValidationErrorKey = <someKey pointing to someObject #1>;
NSValidationErrorObject = <dump #2 of someOtherObject which points to the dump #1 object>;
NSValidationErrorValue = { <list of someMoreObjects> };
}
Run Code Online (Sandbox Code Playgroud)
用户信息字典中还有其他键.
我得到的所有转储都是有效的对象,我已经验证了所有这些.
NSValidationErrorObject
是其具有的对象NSSet
包含在倾倒类型的对象NSAffectedObjectsErrorKey
和NSValidationErrorValue
.但所有这些对象都是有效的.
此外,这是随机发生的,有时会发生,有时不会发生,有时倾倒的列表NSValidationErrorValue
更长,有时更短.
我不知道为什么会发生这种情况,或者究竟是什么错误.有谁知道发生了什么?什么可能导致这个奇怪的错误?
Tec*_*Zen 26
这种错误通常是因为当一个物体没有必要的互惠关系时经常设置不正确的关系.该对象是"悬空",因为对象图表示它应该处于一种关系中,但它只是在空间中悬挂而未连接到任何其他对象.该对象在内部一致的意义上仍然有效,但它不在图中的有效位置.
小智 18
这个问题有一段时间被问到,但我刚刚遇到它.在我的情况下,在技术上不适当地设置关系.这是由于在不同的上下文中创建了对象,因此请注意不同的线程上只是同一线程上的不同上下文.
因此,如果您正在使用Core Data的线程执行任何操作,请查找线程问题.
小智 12
假设你有一个表"食谱"和一个子表"成分".然后,您可以创建从配方到配料的一对多关系,并创建从配料到配方的反向关系(一对一).从配方表中指定"级联"的删除规则是有意义的,因为如果删除配方,则还应删除配方.但是,如果在删除规则中对成分中的一对一关系指定"无操作",则在尝试删除成分时将获得悬空引用错误.将一对一关系上的删除规则更改为"nullify",这应该可以解决问题.
我知道事情已经很久了,但我一直在核心数据模型上解决这个问题,其中所有关系都设置为Nullify.保持得到这些悬挂引用,直到我找到一个单一setPrimitiveValue
而不是setValue
当我添加到关系时.小心,关系,你必须确保你做正确的事情,让Core Data为你维护关系!
归档时间: |
|
查看次数: |
14531 次 |
最近记录: |