2010-11-30 40 views
0

我的眼睛在试图找出这一个小时的时候受到了伤害 - 我已经在线查找了很长一段时间的答案(告诉它有多少......这会让人很尴尬)。 我想要做的就是枚举在anExpression上使用for-in循环,这是一个包含NSNumbers和NSStrings的NSMutableArray。 我的NSLog打印变量ans返回一个空字符串。 我在做什么错?从NSMutableArray构建一个NSstring

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

哎,遗憾的坏编码格式,再次发布它...

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; 
+0

我编辑你的原件,这是不需要的。 – 2010-11-30 17:56:20

2

我想你的意思

ans = [ans stringByAppendingString:(NSString *)obj]; 

不仅仅是

[ans stringByAppendingString:(NSString *)obj]; 

NSString的是不可改变的 - 你不能追加到他们。 -stringByAppendingString:返回一个新的字符串(您可以将其分配给ans)。可以使用NSMutableString-appendString:方法。

0

该方法stringByAppendingString:返回一个通过将给定的字符串附加到接收器进行的字符串。

所以你想ans = [ans stringByAppendingString:obj];