0

ユーザーのデフォルトから数値を取得して乗算しようとしています。これが私のコードです:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSDecimalNumber *current = [prefs  objectForKey:@"account"];
NSDecimalNumber *multiplier = [NSDecimalNumber decimalNumberWithString:@"1.15"];
NSDecimalNumber *floo = [current decimalNumberByMultiplyingBy: multiplier];

ラインにぶつかるとすぐに、この本当に恐ろしいクラッシュが発生しflooます。エラー gobbledygook の大量の噴出は、次のように始まります。

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', 
reason: '-[__NSCFNumber decimalNumberByMultiplyingBy:]: unrecognized selector 
sent to instance 0x8c7b1e0'

これは非常に単純なことのように思えましたが、なんと!何が起こっていますか?

4

2 に答える 2

0

オブジェクトを次のように保存するなど、アーカイバーを使用することをお勧めします。

[[NSUserDefaults standardUserDefaults] setObject:[NSKeyedArchiver archivedDataWithRootObject:current] forKey:@"account"];

そしてそれを取得します:

current = [NSKeyedUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] objectForKey:@"account"] ];

これは、実際に __NSCFNumber が返されていることを確認して変換するよりも信頼性が高いと思います。

于 2015-02-02T13:12:44.233 に答える