0

こんにちは、エラーの無効なオペランドをバイナリ式 nsstring と id に取得しています。型キャストを使用しても、これは問題のあるコードです。このコードを修正してください。

for (int j = 0 ; j<newarray.count ; j++){
        if(j<newarray.count){
 message = (NSString *) message + [newarray objectAtIndex:j]+ "," ;
        }
    }
4

4 に答える 4

4

オブジェクトで演算子を使用することはできません+。特定のケースでは、サイクル全体を次のように置き換えることができます。

NSString* message = [newarray componentsJoinedByString:@","];

また、FIY Objective-C は、演算子のオーバーロードをまったくサポートしていません。

于 2012-10-25T09:17:04.113 に答える
1

これがあなたの意図であるかどうかはよくわかりませんが、コンマで区切られた文字列に新しい情報を追加しようとしている場合は、次のようにすることができます。

for (int j = 0 ; j<newarray.count ; j++){
    [message stringByAppendingString:[NSString stringWithFormat:@"%@,",[newarray objectAtIndex:j]]];
}

さらに、条件if(j<newarray.count)はこのループで常に true と評価されるため、不要です。

于 2012-10-25T09:19:05.997 に答える
0

デフォルトの戻り値の型が「id」の「[newarray objectAtIndex:j]」をキャストする必要があります。

これをチェックして

また、IIRC NSString には + オペランドがオーバーロードされていません。[NSString stringWithFormat:] を試してみてください。

于 2012-10-25T09:16:57.200 に答える
0

あなたはC++NSStringのように振る舞うと仮定しているようです。std::stringこれを試して:

NSMutableString *message = ...;
for (unsigned j = 0; j < newarray.count; j++)
{
    if (j > 0)
        [message appendString:@", "];
    [message appendString:[newarray objectAtIndex:j]];
}
于 2012-10-25T09:19:35.237 に答える