2017-10-03 2 views
1

配列のインデックスにあるオブジェクトに整数を追加しているときに、 "一定のサイズではないインターフェイスIDへのポインタの算術演算このアーキテクチャとプラットフォームでは、それを解決する方法がわかりませんでした。 助けてください。配列のインデックスにオブジェクトを追加する際にエラーが発生する(目的c)

私のコードがある - 第四行で

if (arrayTotalAmount.count>0) { 
        int sum = 0; 
        for (int i = 0; i<=arrayTotalAmount.count; i++) { 
        sum = (sum+[arrayTotalAmount objectAtIndex:i]); 

    } 

私はエラーを取得しています。 ありがとう

答えて

1

あなたは配列オブジェクトを整数に変換してから追加すればよいでしょう。

if (arrayTotalAmount.count>0) { 
        int sum = 0; 
        for (int i = 0; i<=arrayTotalAmount.count; i++) { 
        sum = (sum+[[arrayTotalAmount objectAtIndex:i] intValue]); 

    } 
+0

ありがとうChandni、 これは機能します。 – Harsh

1

目的CアレイはNSObjectタイプのみを受け入れます。つまり、NSArrayにプリミティブな値を挿入することは不可能です。 objectAtIndexメソッドがNSObjectを指すポインタを返すため、算術演算は引き続きポインタに対して有効ですが、整数(32ビット、64ビット)としてのポインタのサイズがデバイス上で異なる可能性があるため、エラーが発生します。したがって、解決策の1つは、sum+(int)[arrayTotalAmount objectAtIndex:i]というポインタを型キャストしているため、あなたのケースでは意味をなさない。

あなたが探している解決策はおそらくsum+[[arrayTotalAmount objectAtIndex:i] intValue]またはそれに類するものです。配列にNSNumberオブジェクトが含まれていると仮定します。配列内のオブジェクトがNSNumberでない場合、アプリケーションは実行時にエラーを表示し、オブジェクトXにはintValueというメソッドがないことを示します。その場合、オブジェクトXintに変換する方法を理解する必要があります。

+0

あなたの貴重な時間をありがとう。私は私の答えを見つけました:) – Harsh

+0

@Harshそれは他の答えと同じ解決策です。しかし、Objective-Cで配列を扱っているので、 'objectAtIndex:i'の代わりに' [arrayTotalAmount [i] intValue] 'を使うことができます。しかし、あなたの場合には、ループを回して 'for(NSNumber * number in arrayTotalAmount)sum + = [number intValue];を使用する方が良いでしょう。 –

関連する問題