2010-11-30 74 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];