3

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

- (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 开始不仅仅是一个不起作用的空字符串。我也尝试分配[params objectAtIndex:i]给一个字符串然后附加它,也没有工作。

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

我怎样才能让这个字符串数组打印成一个用逗号分隔的字符串?

4

3 回答 3

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;
}
于 2013-02-11T20:50:24.987 回答
4

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

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

于 2013-02-11T20:44:05.303 回答
1

尝试:

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

as stringByAppendingString 通过返回一个新字符串来工作

于 2013-02-11T20:47:10.793 回答