在for循环中附加到NSMutableString

ilt*_*ris 1 objective-c nsstring ios

NSMutableString*  highlightedString = [NSMutableString stringWithCapacity:1];
for (QWZTerm* term in self.highlightArray) {
    [highlightedString stringByAppendingFormat:@"%@ ", term.value];
}
Run Code Online (Sandbox Code Playgroud)

基本上,term.values是NSStrings("john"和"mary",我想像"john mary"一样追加它们.不幸的是上面对我不起作用.我会欣赏任何指示.

das*_*ght 5

您正在使用错误的方法:stringByAppendingFormat:处理所有字符串,可变和不可变,因为它返回一个新NSString对象.

由于您希望更改mutable highlightedString本身的内容,因此您需要使用appendFormat::

NSMutableString*  highlightedString = [NSMutableString stringWithCapacity:1];
for (QWZTerm* term in self.highlightArray) {
    [highlightedString appendFormat:@"%@ ", term.value];
}
Run Code Online (Sandbox Code Playgroud)

你可以在一行代码中不使用可变字符串或循环来完成整个事情:

NSString* res = [[highlightArray valueForKey:@"value"] componentsJoinedByString:@" "];
Run Code Online (Sandbox Code Playgroud)

这里valueForKey描述了电话背后的"魔力" .