遷移後,我的一個數值應該爲非零,現在顯示爲零。如果我不遷移,該值將保留其非零值。核心數據遷移失去NSNumber值
我第一次嘗試在這樣的管理對象設置數值:
[temp setNumUses:temp.numUses+1];
...但造成an'EXC_BAD_ACCESS」,所以我把它改爲:
int hold = ((int)[[temp valueForKey:@"numUses"] intValue]);
hold++;
[temp setNumUses:[[NSNumber alloc] initWithInt:hold]];
。 ..但是在遷移之後,這段代碼聲稱hold
在運行新代碼之前被初始化爲一個值爲0的int,它的值明顯是1或更多(指的是僅使用1次的測試對象)。
當我不遷移核心數據數據庫時,NSNumber通過許多上下文保存和應用程序終止來保留其值。
我可能會丟失什麼?我有一些廣泛的代碼,修改其他地方存儲的數據庫中更改的NSManagedObjects的值,但不會篡改'numUses'。
想法?
嗨,我想指出,我在Objective-C編程方面相對較新。我在分配之前嘗試了NSNumber類的方法,但我想覆蓋所有的基礎,以確保一切。無論如何還是有NSNumber值爲0的問題。有沒有關於核心數據遷移模型的任何提示?要在我的代碼中遷移數據庫,我只需按照指南添加自動遷移,是否有更好的方法/使用該方法修復此問題的簡單方法呢? – 2010-09-27 16:36:55
另外,爲什麼會:[temp setNumUses:temp.numUses + 1];結束工作?我前一段時間編寫了該代碼,此後已被替換,但在遷移之前它確實有效。是否有操作符方法寫入NSNumber?或者這些不存在?謝謝! – 2010-09-27 16:38:26
NSNumber沒有操作符方法。你不能只爲NSNumber對象添加標量。如果你嘗試,你會實際增加對象的地址。我不知道你的移民失敗的原因。 – TechZen 2010-09-27 22:13:22