Проблема appendingStrings (NSString) в цикле for - PullRequest
1 голос
/ 25 мая 2011

Хорошо, я извлекаю список адресов для данного почтового индекса из онлайн-источника данных. Запросы отправляют мне JSON массива массивов, в первом слое массива находятся массивы строк.

Они содержат, например.

Addressline1, Addressline2, Town, Country, Postcode

Мне нужно добавить все эти строки вместе для каждого адреса, чтобы у меня была только 1 рабочая строка для каждого адреса. Однако иногда в массивах есть пустое поле @"".

Вот мой цикл.

    id object;
    NSString *startString = [NSString stringWithString:@"testStart:"];

    for (object in arrayContainingAddress) {

        NSString *useableString = [NSString stringWithFormat:@"%@", object];

        if (![useableString isEqualToString:@""]) {
            NSLog(@"%@", useableString);
            [startString stringByAppendingString:useableString];
            NSLog(@"%@", startString);
        }   

    }

    NSLog(@"%@", startString);

Проблема в том, что startString ВСЕГДА выходит из системы в конце как 'testStart:', но при этом журналы useableString содержат правильную адресную строку, город и т. Д. Стартовый NSLog внутри цикла for также просто выходит из системы как 'testStart:'.

Весь этот кусок кода находится внутри цикла while, который переключает 'arrayConistingAddress' для соответствующего массива для каждого адреса.

Причина «объекта id» заключается в том, что мое преобразование JSON иногда преобразует значения в NSNumbers (первая строка адреса может быть номером дома, например, 123), и поэтому я предотвращаю сбой здесь.

TLDR: строка 'startString' не добавляется в цикл for.

Ответы [ 2 ]

6 голосов
/ 25 мая 2011

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

То, что вы хотите сделать, это сделать вашу startString изменяемой строкой:

NSMutableString *startString = [NSMutableString stringWithString:@"testStart:"];

, затем используйте метод appendString:

[startString appendString:useableString];
3 голосов
/ 25 мая 2011

Вы должны изменить свой код следующим образом:

    if (![useableString isEqualToString:@""]) {
        NSLog(@"%@", useableString);
        startString = [startString stringByAppendingString:useableString];
        NSLog(@"%@", startString);
    }

Вы не обновляли startString в цикле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...