2017-04-20 4 views
0

私はNSMutabelArrayを持っており、その中にいくつか追加したいと思います。これを使って関数を呼び出すことでこれを行い、計算を行う必要のある項目を持つ部分配列を作成します。NSArrayのNSDecimalNumbersを別のNSArrayに置き換えると、エラーが発生する

- (NSDecimalNumber *)calculate:(NSMutableArray *)arrayToCalculate { 

    while ([arrayToCalculate containsObject:(@"+")]) { 
    NSUInteger signeLocation = [arrayToCalculate indexOfObject:(@"+")]; 

    [arrayToCalculate replaceObjectAtIndex:(signeLocation-1) 
           withObject:([[arrayToCalculate objectAtIndex:(signeLocation-1)] 
              decimalNumberByAdding:[arrayToCalculate objectAtIndex:(signeLocation+1)]])]; 

    [arrayToCalculate removeObjectsAtIndexes: 
     [NSIndexSet indexSetWithIndexesInRange:NSMakeRange((signeLocation), 2)]]; 
    } 

    return [arrayToCalculate lastObject]; 
} 

私はでarrayToCalculateを初期化:

NSMutableArray *subArray = 
    [inputArray subarrayWithRange:(rangeOfCalculationItems)]; 

私はそれがクラッシュするこのコードを実行するたびに。 NSMutableArrayでサブアレイを使用してNSMutableArrayとして初期化しても、メッセージがNSArrayを返すときにも初期化されましたが、どのように修正できるか、それとも問題であるかはわかりません。

+3

クラッシュとは何ですか? – Paulw11

+0

私はプログラムを実行するとmain.fileのreturn UIApplicationMainによってsignal SIGABRTと表示されます。ステップバイステップに進むと、[arrayToCalculate replaceObjectAtIndex:(...)]命令での動作が停止します。 –

答えて

1

私はあなたの方法をコピーして、このようにそれをテストした:コードの作品や印刷結果が3

NSArray *items = @[ 
         [[NSDecimalNumber alloc] initWithString:@"1"], 
         @"+", 
         [[NSDecimalNumber alloc] initWithString:@"2"] 
         ]; 

    NSLog(@"%g", [self calculate: [items mutableCopy]].floatValue); 

。あなたの問題は他のどこかにある必要があります。あなたの配列は実際に変更可能ですか?注[items mutableCopy]

関連する問題