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)在此循环中始终评估为真,因此是不必要的。

于 2012-10-25T09:19:05.997 回答
0

您应该强制转换“[newarray objectAtIndex:j]”,其默认返回类型是“id”

检查这个

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 回答