0

わかった。この nsmutable 配列を整理して、プログラムが思い通りに使用できるようにしようとしています。

標準の NSMutable 配列から始めて、addobject: メソッドを使用してデータを入力し、さらに NSMutableArray (配列内の配列) を入力しました。このため、ObjectAtIndex: メソッドを何度も呼び出す必要があり、replaceObjectAtIndex: withObject: メソッドもたくさん呼び出す必要があります。また、タイプ ID を持つオブジェクトを NSMutableArrays にのみ広告できるため (少なくともだと思います)、すべての double 変数を NSNumbers に変換してから、doubles に戻して数学に戻し、NSNumbers に戻して再度保存する必要がありました...ほとんど効率的ではありません。

しかし、主な問題は (以前のものは私が興味を持っていたものでした)、次のコードです:

NSMutableArray * array = [tmp objectAtIndex x];
[tmp replaceObjectAtIndex:x withObject: [array replaceObjectAtIndex:2 withObject: result]];

Xcode によると、問題は 2 行目にあるとのことです。コンテキストについて少し説明するために最初の行を追加しただけです。結果は NSNumber で、tmp も NSMutableArray です。Xcode は、エラーは「互換性のないタイプ 'id' のパラメーターに 'Void' を送信しています」と述べています。

私は本当に助けていただければ幸いです:)。ありがとう!

4

2 に答える 2

3

行を分解しましょう[tmp replaceObjectAtIndex:x withObject: [array replaceObjectAtIndex:2 withObject: result]];

このような問題が発生し、ネストされたメソッドが多数ある場合は、最も深いメソッド呼び出しから始めて移動し、ドキュメントをチェックして各メソッドが何を返すかを確認します。この場合、答えは簡単ですが、常に良い習慣です。

-[NSMutableArrray replaceObjectAtIndex:withObject:]を返すvoidため、次のようになります。

[tmp replaceObjectAtIndex:x withObject: void]、したがって、Xcode が正当に文句を言う必要があるvoid2 番目の引数として渡します。replaceObjectAtIndex:withObject:

于 2012-08-27T01:19:18.970 に答える
1

replaceObjectAtIndex の戻り値の型は void であるため、そのエラーが発生します。あなたの意図は配列を追加することでしたが、その式全体の結果を追加しているだけで、これは無効です。replaceObjectAtIndex メソッドを別の行として用意し、配列をオブジェクト引数として使用する必要があります。

于 2012-08-27T01:20:58.627 に答える