NSMutableString* highlightedString = [NSMutableString stringWithCapacity:1];
for (QWZTerm* term in self.highlightArray) {
[highlightedString stringByAppendingFormat:@"%@ ", term.value];
}
基本上,term.values是NSStrings(" john"" mary"我想像#34; john mary"那样追加它们。不幸的是上面没有'对我有用。我会欣赏任何指示。
答案 0 :(得分:5)
您使用了错误的方法:stringByAppendingFormat:
适用于所有字符串,可变和不可变,因为返回一个新的NSString
对象。
由于您希望更改可变highlightedString
本身的内容,因此您需要使用appendFormat:
代替:
NSMutableString* highlightedString = [NSMutableString stringWithCapacity:1];
for (QWZTerm* term in self.highlightArray) {
[highlightedString appendFormat:@"%@ ", term.value];
}
你可以在一行代码中不使用可变字符串或循环来完成整个事情:
NSString* res = [[highlightArray valueForKey:@"value"] componentsJoinedByString:@" "];
valueForKey
调用背后的“魔力”描述为here。
答案 1 :(得分:2)
另一种解决方案是将字符串收集在一个可变数组中然后加入它们:
NSMutableArray* values = [NSMutableArray array];
for (QWZTerm* term in self.highlightArray) {
[values addObject:term.value];
}
NSString* highlightedString = [values componentsJoinedByString:@" "];
这可以避免使用appenFormat:
解决方案获得的尾随空格。
答案 2 :(得分:1)
你的功能错了。使用appendFormat:
。 stringByAppendingFormat:
返回一个新的NSString对象,并不附加到NSMutableString实例。
NSMutableString* highlightedString = [NSMutableString stringWithCapacity:1];
for (QWZTerm* term in self.highlightArray) {
[highlightedString appendFormat:@"%@ ", term.value];
}
答案 3 :(得分:0)
您也可以更改
行[highlightedString stringByAppendingFormat:@"%@ ", term.value];
到
highLightedString = [highlightedString stringByAppendingFormat:@"%@ ", term.value];