Le *_*ced 0 objective-c nsnumber
我正在尝试从用户默认值中检索一个数字并将其相乘.这是我的代码:
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSDecimalNumber *current = [prefs objectForKey:@"account"];
NSDecimalNumber *multiplier = [NSDecimalNumber decimalNumberWithString:@"1.15"];
NSDecimalNumber *floo = [current decimalNumberByMultiplyingBy: multiplier];
Run Code Online (Sandbox Code Playgroud)
一旦碰到这floo条线,它就会给我一个非常可怕的崩溃.巨大的错误gobbledygook开始于:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: '-[__NSCFNumber decimalNumberByMultiplyingBy:]: unrecognized selector
sent to instance 0x8c7b1e0'
Run Code Online (Sandbox Code Playgroud)
这看起来很简单,但我的天啊!发生了什么?
您已将值赋给[prefs objectForKey:@"account"]NSDecimalNumber变量,但实际值是NSNumber,而不是NSDecimalNumber.当您尝试调用-decimalNumberByMultiplyingBy:该对象时,程序崩溃,因为该对象不知道如何处理该方法.
您可以将NSNumber转换为NSDecimalNumber,如下所示:
NSNumber *number = /* ... */
NSDecimalNumber *decimalNumber =
[NSDecimalNumber decimalNumberWithDecimal:[number decimalValue]];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
900 次 |
| 最近记录: |