从NSMutableArray构建NSstring

时间:2010-11-30 17:48:50

标签: nsstring nsmutablearray nsarray nslog

我的眼睛因为试图弄清楚这个而伤害了几个小时 - 我已经在网上寻找了一段时间的答案(告诉多少......这将是令人尴尬的。)。 我想要做的就是枚举在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);
    }

3 个答案:

答案 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];