NSNumberプロパティ(モデルの整数16)を持つCoreDataエンティティがあります。私は私のテストを実行したときに値123000を持つintです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
:私は、次のコードを持っています。 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に変更しました。これは意図したとおりに動作しています。 –