2010-11-30 3 views
0

Мои глаза болят от часов попыток понять это - и я долго искал ответ в режиме онлайн (будет неловко рассказать, сколько ...). все, что я пытаюсь сделать, это перечислить с помощью цикла for-in на выражение, которое является NSMutableArray, которое содержит NSNumbers и NSStrings. my NSLog print для переменной ans возвращает пустую строку. Что я делаю неправильно?Построение NSstring из NSMutableArray

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

NSStrings являются неизменными - вы не можете добавлять к ним. -stringByAppendingString: возвращает новую строку (которую вы затем можете присвоить ans).

Кроме того, вы можете использовать метод NSMutableString и -appendString:.

0

метод stringByAppendingString: возвращает новую строку, которая добавляет данную строку в приемник.

так что вы хотите ans = [ans stringByAppendingString:obj];

Смежные вопросы