核心数据:删除未保存的对象时出错

时间:2010-07-28 14:37:02

标签: objective-c cocoa core-data nsmanagedobject nsmanagedobjectcontext

我在核心数据项目上遇到了一些麻烦。我有一个带有NSManagedObjects的NSArrayController和+ / - 按钮。如果我在保存文件后删除行中的对象,它可以正常工作,但是如果我添加一个新对象,并立即再次删除它(不更改任何默认值),我会收到错误:

Serious application error.  Exception was caught during Core Data change processing: Unknown number type or nil passed to arithmetic function expression. with userInfo (null)  
Unknown number type or nil passed to arithmetic function expression.  

如果我撤消新对象的添加,情况也是如此。

任何人都能给我指针做什么?我认为它与它有关,它只有一个临时ID,但如何解决它我不知道。

2 个答案:

答案 0 :(得分:1)

我发现了问题和解决方案。为了记录,我将描述它。

问题在于其init函数中的对象在其自身上添加了一个观察者。这可能是触发错误的原因。如果我在删除对象之前将其自身删除为观察者,则不会产生错误。

答案 1 :(得分:0)

表通常不包含NSManagedObjects。相反,NSArrayController通过绑定或符合NSTableViewDataSource的对象提供托管对象的属性作为值。删除在这些场景中的任何一个中提供的所选对象可以通过多种方式完成。问题是,你根本没有解释你的案例是如何设置的。

您的删除(无论您的按钮连接到哪个目标/操作)是否可能被传递为零或意外?如果您要求托管对象上下文删除浮点值或其他随机内容,我可以想象一个类似frighenting错误...