如何将 NSArray 元素加入 NSString?
Posted
技术标签:
【中文标题】如何将 NSArray 元素加入 NSString?【英文标题】:How to join NSArray elements into an NSString? 【发布时间】:2009-09-07 03:32:13 【问题描述】:给定一个由 NSString 组成的 NSArray,有没有一种快速的方法可以将它们组合成一个 NSString(带有分隔符)?
【问题讨论】:
我一定是瞎子!或累。或两者兼而有之…… 如果你在 NSString 文档中搜索这个,你将永远找不到它。它在 NSArray 中! 【参考方案1】:NSArray * stuff = /* ... */;
NSString * combinedStuff = [stuff componentsJoinedByString:@"separator"];
这是-[NSString componentsSeparatedByString:]
的倒数。
【讨论】:
【参考方案2】:NSArray 上的-componentsJoinedByString:
应该可以解决问题。
【讨论】:
【参考方案3】:还有这种变体,如果您的原始数组包含键值对象,您只想从中选择一个属性(可以序列化为字符串):
@implementation NSArray (itertools)
-(NSMutableString *)stringByJoiningOnProperty:(NSString *)property separator:(NSString *)separator
NSMutableString *res = [@"" mutableCopy];
BOOL firstTime = YES;
for (NSObject *obj in self)
if (!firstTime)
[res appendString:separator];
else
firstTime = NO;
id val = [obj valueForKey:property];
if ([val isKindOfClass:[NSString class]])
[res appendString:val];
else
[res appendString:[val stringValue]];
return res;
@end
【讨论】:
代码中存在内存泄漏,mutableCopy 保留了它正在复制的对象,因此您需要在最后执行 return [res autorelease]。也没有理由做 mutablecopy 而不是直接制作一个 mutablestring。 @thewormsterror :忘了说这段代码是为 ARC 准备的。此外,mutablecopy 调用是现代 Objective-c 约定,用于使用 @-syntax 创建对象的可变版本(例如可变 nsarray 的 [@[] mutablecopy])。不知道它对性能有何影响。以上是关于如何将 NSArray 元素加入 NSString?的主要内容,如果未能解决你的问题,请参考以下文章
将NSArray中的每个NSString元素显示为UIButton Objective C