在 for 循环中附加到 NSMutableString
Appending to NSMutableString in a for loop
NSMutableString* highlightedString = [NSMutableString stringWithCapacity:1];
for (QWZTerm* term in self.highlightArray) {
[highlightedString stringByAppendingFormat:@"%@ ", term.value];
}
基本上 term.values 是 NSString("john" 和 "mary",我想像 "john mary" 一样附加它们。不幸的是,上面的内容对我不起作用。我会感谢任何指导。
您使用了错误的方法:stringByAppendingFormat:
适用于所有字符串,可变的和不可变的,因为它 returns 一个新的 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
调用后面的"magic"描述为here。
你的功能是错误的。使用 appendFormat:
。 stringByAppendingFormat:
returns 一个新的 NSString 对象并且不会附加到那里的 NSMutableString 实例。
NSMutableString* highlightedString = [NSMutableString stringWithCapacity:1];
for (QWZTerm* term in self.highlightArray) {
[highlightedString appendFormat:@"%@ ", term.value];
}
另一种解决方案是将字符串收集到一个可变数组中,然后将它们连接起来:
NSMutableArray* values = [NSMutableArray array];
for (QWZTerm* term in self.highlightArray) {
[values addObject:term.value];
}
NSString* highlightedString = [values componentsJoinedByString:@" "];
这避免了使用 appenFormat:
解决方案时出现的尾随 space。
你也可以换行
[highlightedString stringByAppendingFormat:@"%@ ", term.value];
至
highLightedString = [highlightedString stringByAppendingFormat:@"%@ ", term.value];
NSMutableString* highlightedString = [NSMutableString stringWithCapacity:1];
for (QWZTerm* term in self.highlightArray) {
[highlightedString stringByAppendingFormat:@"%@ ", term.value];
}
基本上 term.values 是 NSString("john" 和 "mary",我想像 "john mary" 一样附加它们。不幸的是,上面的内容对我不起作用。我会感谢任何指导。
您使用了错误的方法:stringByAppendingFormat:
适用于所有字符串,可变的和不可变的,因为它 returns 一个新的 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
调用后面的"magic"描述为here。
你的功能是错误的。使用 appendFormat:
。 stringByAppendingFormat:
returns 一个新的 NSString 对象并且不会附加到那里的 NSMutableString 实例。
NSMutableString* highlightedString = [NSMutableString stringWithCapacity:1];
for (QWZTerm* term in self.highlightArray) {
[highlightedString appendFormat:@"%@ ", term.value];
}
另一种解决方案是将字符串收集到一个可变数组中,然后将它们连接起来:
NSMutableArray* values = [NSMutableArray array];
for (QWZTerm* term in self.highlightArray) {
[values addObject:term.value];
}
NSString* highlightedString = [values componentsJoinedByString:@" "];
这避免了使用 appenFormat:
解决方案时出现的尾随 space。
你也可以换行
[highlightedString stringByAppendingFormat:@"%@ ", term.value];
至
highLightedString = [highlightedString stringByAppendingFormat:@"%@ ", term.value];