麻烦在for循环中追加字符串(NSString)

Bon*_*geh 1 string iphone cocoa objective-c nsstring

好的,所以我从在线数据源中提取给定邮政编码的地址列表.请求向我发送了一个数组数组的JSON,在数组的第一层内是字符串数组.

这些包含例如.

Addressline1, Addressline2, Town, Country, Postcode
Run Code Online (Sandbox Code Playgroud)

我需要为每个地址添加所有这些字符串,这样我每个地址只有一个工作字符串.但是,有时@""阵列中有一个空白字段.

这是我的for循环.

    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);
Run Code Online (Sandbox Code Playgroud)

问题是,startString总是以'testStart:'结尾注销,但useableString记录包含正确的地址,城镇等,for循环中的startString NSLog也只是注销为'testStart:'.

整个代码块都位于while循环中,该循环为每个地址切换适当数组的'arrayContainingAddress'.

"id对象"的原因是我的JSON转换有时会将值转换为NSNumbers(地址的第一行可能是门牌号,例如123),因此我在此处防止崩溃.

TLDR:在我的for循环中没有附加字符串'startString'.

Amy*_*all 6

stringByAppendingString对调用它的字符串没有任何作用.它返回一个新的自动释放字符串,它是两者的串联.

你想要做的是使你的startString成为一个可变的字符串:

NSMutableString *startString = [NSMutableString stringWithString:@"testStart:"];
Run Code Online (Sandbox Code Playgroud)

然后使用appendString方法:

[startString appendString:useableString];
Run Code Online (Sandbox Code Playgroud)