二进制表达式nsstring和id的操作数无效

时间:2012-10-25 09:13:15

标签: iphone objective-c

嗨我得到errer无效的operends到二进制表达式nsstring和id甚至我使用类型转换这是我有问题的代码。请更正此代码。

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

4 个答案:

答案 0 :(得分:4)

您不能将+运算符与对象一起使用,对于您的具体情况,您可以用以下代码替换整个循环:

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

FIY Objective-C根本不支持运算符重载。

答案 1 :(得分:1)

我不确定这是否是你的意图,但如果你试图将新信息附加到以逗号分隔的字符串中,你可以使用以下内容:

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

此外,您的条件if(j<newarray.count)将始终在此循环中评估为true,因此不必要。

答案 2 :(得分:0)

您应该投射“[newarray objectAtIndex:j]”,其默认返回类型为“id”

Check this

IIRC NSString也没有+操作数重载。所以也许你应该尝试[NSString stringWithFormat:]。

答案 3 :(得分: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]];
}