我有一些核心数据项目的麻烦。我有一个带有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有关,但如何解决它我不知道。
你应该**不**覆盖'NSManagedObject'的'-init ...'方法和它的'-dealloc'方法。如果你需要添加一个观察者,你应该在'-awakeFromInsert'和'-awakeFromFetch'中执行。 – 2010-07-28 23:28:56
根据文档“覆盖注意事项的方法”,initWithEntity:insertIntoManagedObjectContext:amd dealloc是否被允许覆盖?我使用init而不是唤醒的原因是因为我发现唤醒并不总是callen(如果用户撤销或某事)。但我可能是错的。 – 2010-07-29 08:28:23
你是正确的撤销和重做,在10.6+有另外的方法awakeFromSnapshotEvent这也是撤销/重做中调用。作为10.5的解决方法,我更改了ManagedObjectContext以允许撤消和重做工作观察http://github.com/mbrugger/CoreDataDependentProperties/blob/master/LPAutomatedObserving/Classes/LPManagedObjectContext.m – 2010-07-29 16:57:10