Создание NSstring из NSMutableArray - PullRequest
       32

Создание NSstring из NSMutableArray

0 голосов
/ 30 ноября 2010

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

  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 ]

2 голосов
/ 30 ноября 2010

Я думаю, что вы имеете в виду

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

, а не просто

[ans stringByAppendingString:(NSString *)obj];

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

В качестве альтернативы вы можете использовать NSMutableString и метод -appendString:.

0 голосов
/ 30 ноября 2010

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

так хочешь ans = [ans stringByAppendingString:obj];

0 голосов
/ 30 ноября 2010

Привет, извините за плохой формат кодирования, выложу его снова ...

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