我有一個CoreData實體與一個NSNumber屬性(在模型中的整數16)。我有以下代碼:的iOS5 CoreData實體顯示錯誤的NSNumber價值,適用於iOS4的
NSLog(@"raw changeAmount=%d", changeAmount);
NSNumber *changeNumber = [NSNumber numberWithInt:changeAmount];
NSLog(@"number changeAmount=%d = %@", [changeNumber intValue], changeNumber);
record.changeAmount = changeNumber;
NSLog(@"new changeAmount=%d", [record.changeAmount intValue]);
changeAmount
是值當我運行我的測試123000一個int。當我在iOS 4上測試時,一切正常並打印出123000.但是,如果我在iOS 5上運行相同的代碼,則值爲-8072或-25,536。像這樣:
raw changeAmount=123000
number changeAmount=123000 = 123000
new changeAmount=-8072
iOS4和iOS5之間發生了什麼事情?我整個過程中都錯誤地設置了我的NSNumber屬性嗎?
它不會出現是一個整數大小的問題,因爲我改用整數32(這應該是所有一起)的模型,它仍然發生。所以我們沒有得到整數溢出或任何東西。
嗨保羅,感謝您的迴應!我在編輯我的文章時,你打字,因爲我認爲同樣的事情。我將我的模型更新爲int32s,但仍然在發生。我將假設更新模型時出現了問題,因爲-8072不是巧合。謝謝。 –
我會猜測,雖然您更新了模型,但數值已經作爲-8072保存在您的數據庫中,因此,當您進行遷移時,遷移如何知道-8072不是您想要的?它不能僅僅假設價值已經溢出。 –
啊發現了!我顯然正在更新錯誤的模型。我在更改之前創建了一個新版本,將新版本設置爲當前版本,並且我認爲我正在編輯新版本,但唉,不。我將舊模型更改回int16,將新模型更改爲int32,現在按預期工作。 –