stringByAppendingString不连接

时间:2013-02-11 20:43:07

标签: ios objective-c

我正在尝试获取一个字符串数组并取出每个项目并将其放入字符串格式。我写了一个方法来执行此操作,因为我需要将列出的数组值连接到另一个字符串。由于某种原因,我无法正确列出数组值,返回空字符串。

- (NSString*)listParameters:(NSArray*)params
{
NSString *outputList = @"";

if (params) {
    for (int i=0; i<[params count]; i++) {
        NSLog(@"%@",[params objectAtIndex:i]);
        [outputList stringByAppendingString:[params objectAtIndex:i]];
        if (i < ([params count] - 1)) {
            [outputList stringByAppendingString:@", "];
        }
    }
}
NSLog(@"outputList: %@", outputList);
return outputList;
}

第一个日志语句正确返回一个字符串(因此数组中肯定有一个字符串),但第二个日志语句只返回“outputList:”。

我尝试将outputList start作为一个不起作用的空字符串。我还尝试将[params objectAtIndex:i]分配给字符串,然后附加它,也不起作用。

我觉得我在这里遗漏了一些明显的东西,但我无法让它发挥作用。

如何将这个字符串数组打印成用逗号分隔的单个字符串?

3 个答案:

答案 0 :(得分:8)

您可能希望使用NSMutableString代替其appendString方法。 NSString是不可变的。

- (NSString*)listParameters:(NSArray*)params
{
    NSMutableString *outputList = [[NSMutableString alloc] init];

    if (params) {
        for (int i=0; i<[params count]; i++) {
            NSLog(@"%@",[params objectAtIndex:i]);
            [outputList appendString:[params objectAtIndex:i]];
            if (i < ([params count] - 1)) {
                [outputList appendString:@", "];
            }
        }
    }

    NSLog(@"outputList: %@", outputList);
    return outputList;
}

答案 1 :(得分:4)

您需要将[outputList stringByAppendingString:[params objectAtIndex:i]][outputList stringByAppendingString:@", "]的结果分配回outputList

如果您使用NSMutableString的实例代替outputList,那将会更好,因为您将在该循环中创建大量自动释放的对象。

答案 2 :(得分:1)

尝试:

outputList = [outputList stringByAppendingString:@", "];

as stringByAppendingString通过返回一个新的String

来工作