0

と呼ばれるプロパティtotalがありNSDecimalNumberます。私の switch ステートメントでは、数値に対して単純な加算と減算を実行しようとしていますが、「unrecognized selector sent to instance」エラーが発生し続けます。コードは次のとおりです。

switch (t) {
case 0:
{
    if (_zero == YES)
    {
        _total = [_total decimalNumberBySubtracting:[NSDecimalNumber decimalNumberWithString:@"4.5"]];
        i = (UIImageView *)[self.view viewWithTag:7];
        i.hidden = YES;
    } else {
        NSDecimalNumber *fourpointfive = [[NSDecimalNumber alloc] initWithDecimal:[[NSNumber numberWithFloat:4.5] decimalValue]];
        _total = [_total decimalNumberByAdding:fourpointfive];
        i = (UIImageView *)[self.view viewWithTag:7];
        i.hidden = NO;
    }
    break;

同じメソッドで、switch ステートメントの直前に初期化します。

_total = [[NSDecimalNumber alloc] initWithDecimal:[[NSNumber numberWithFloat:0] decimalValue]];

そして私の @interface で:

@property (strong, nonatomic) NSDecimalNumber *total;

アップデート:

初期化を次のように変更しました。

_total = [[NSDecimalNumber alloc] initWithString:@"0"];

しかし、それはまだクラッシュしています。への他の参照も削除しましたdecimalValue

これは私が得るエラーメッセージです:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber decimalNumberByAdding:]: unrecognized selector sent to instance
4

2 に答える 2

0

iOS では、NSNumber の decimalValue は NSDecimalNumber ではなく、NSDecimal を返します。

于 2013-07-15T16:45:19.660 に答える
0

わかりました、問題は解決しました。に保存NSDecimalNumberしていましたNSUserDefaults。デフォルトに保存された NSDecimalNumber は、再度フェッチされたときと同じように変換されNSNumberて返されます。NSNumber私はfloatValueデフォルトから戻ってきて、それをNSDecimalNumber.

于 2013-07-15T17:29:28.777 に答える