我有一些核心數據項目的麻煩。我有一個帶有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