好的,所以我从在线数据源中提取给定邮政编码的地址列表。请求向我发送了一个数组数组的JSON,在数组的第一层内是字符串数组。
这些包含例如。
Addressline1, Addressline2, Town, Country, Postcode
我需要为每个地址添加所有这些字符串,这样我每个地址只有一个工作字符串。但是,有时阵列中有一个空白字段@""
。
这是我的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);
问题是,startString总是以'testStart:'结尾注销,但是useableString记录包含正确的地址线,城镇等,for循环中的startString NSLog也只是注销为'testStart:'。
整个代码块都位于while循环中,为每个地址切换适当数组的'arrayContainingAddress'。
'id object'的原因是我的JSON转换有时会将值转换为NSNumbers(地址的第一行可能是门牌号码,例如123),所以我在这里防止崩溃。
TLDR:我的for循环中没有附加字符串'startString'。
答案 0 :(得分:6)
stringByAppendingString
对调用它的字符串没有任何作用。它返回一个新的自动释放字符串,它是两者的串联。
你想要做的是让你的startString成为一个可变的字符串:
NSMutableString *startString = [NSMutableString stringWithString:@"testStart:"];
然后使用appendString
方法:
[startString appendString:useableString];
答案 1 :(得分:3)
您应该更改您的代码,如下所示:
if (![useableString isEqualToString:@""]) {
NSLog(@"%@", useableString);
startString = [startString stringByAppendingString:useableString];
NSLog(@"%@", startString);
}
您没有更新循环中的startString
。