我的眼睛因为试图弄清楚这个而伤害了几个小时 - 我已经在网上寻找了一段时间的答案(告诉多少......这将是令人尴尬的。)。 我想要做的就是枚举在anExpression上使用for-in循环,它是一个NSMutableArray,它包含NSNumbers和NSStrings。 我对变量ans的NSLog打印返回一个空字符串。 我做错了什么?
NSString *ans = @"";
for (id obj in anExpression)
{
if ([obj isKindOfClass:[NSString class]])
[ans stringByAppendingString:(NSString *)obj];
if ([obj isKindOfClass:[NSNumber class]])
[ans stringByAppendingString:(NSString *)[obj stringValue]];
NSLog(@"String so far: %@ ", ans);
}
答案 0 :(得分:2)
我认为你的意思是
ans = [ans stringByAppendingString:(NSString *)obj];
不仅仅是
[ans stringByAppendingString:(NSString *)obj];
NSStrings是不可变的 - 你不能追加它们。 -stringByAppendingString:
会返回新字符串(然后您可以将其分配给ans
)。
或者,您可以使用NSMutableString
和-appendString:
方法。
答案 1 :(得分:0)
嘿,抱歉编码格式不好,再次发布...
NSString *ans = @"";
for (id obj in anExpression)
{
if ([obj isKindOfClass:[NSString class]])
[ans stringByAppendingString:(NSString *)obj];
if ([obj isKindOfClass:[NSNumber class]])
[ans stringByAppendingString:(NSString *)[obj stringValue]];
NSLog(@"String so far: %@ ", ans);
}
[ans autorelease];
NSLog(@"final string is: %@ ", ans);
return ans;
答案 2 :(得分:0)
方法stringByAppendingString:
返回通过将给定字符串附加到接收方而生成的 new 字符串。
所以你想要ans = [ans stringByAppendingString:obj];