0

我在核心数据项目上遇到了一些麻烦。我有一个带有 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 有关,但我不知道如何解决它。

4

2 回答 2

1

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

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

于 2010-07-28T19:53:02.853 回答
0

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

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

于 2010-07-28T15:54:51.783 回答