提问人:Jhorra 提问时间:4/26/2012 最后编辑:AntoineJhorra 更新时间:2/11/2021 访问量:39677
Objective-C 从对象数组创建逗号分隔字符串的最简单方法
Objective-C Simplest way to create comma separated string from an array of objects
答:
172赞
rdelmar
4/26/2012
#1
使用 instance 方法。NSArray
componentsJoinedByString:
在 Objective-C 中:
- (NSString *)componentsJoinedByString:(NSString *)separator
在 Swift 中:
func componentsJoinedByString(separator: String) -> String
例:
在 Objective-C 中:
NSString *joinedComponents = [array componentsJoinedByString:@","];
在 Swift 中:
let joinedComponents = array.joined(seperator: ",")
评论
0赞
Jhorra
4/26/2012
所以我的数组中的对象有 4 或 5 个属性,我如何告诉它只连接 id 值?
1赞
rdelmar
4/26/2012
如果你只记录你的一个对象,你会得到什么?只是 id 值?如果是这样,这就是 componentsJoinedBuString 将得到的:尝试一下,看看。
13赞
Jack Lawrence
4/26/2012
@Jhorra 如果你只想要一个属性的数组,你可以做一些非常棒的事情:它将返回一个只包含该属性的数组。然后调用结果。在幕后,框架正在遍历数组中的所有对象并调用它们。键值编码太棒了![<NSArray instance> valueForKey:@"<string representation of property name>"]
componentsJoinedByString:
valueForKey:
0赞
Jay Q.
2/10/2015
有关更多KVC收集操作员,请查看:nshipster.com/kvc-collection-operators
7赞
Antoine
12/18/2014
#2
如果你在 Swift 中搜索相同的解决方案,你可以使用这个:
var array:Array<String> = ["string1", "string2", "string3"]
var commaSeperatedString = ", ".join(array) // Results in string1, string2, string3
要确保数组不包含 nil 值,可以使用过滤器:
array = array.filter { (stringValue) -> Bool in
return stringValue != nil && stringValue != ""
}
评论
0赞
ultrageek
3/9/2015
这似乎不适用于 Swift 中的 NSMutableArray。搜索谷歌尚未透露答案。
0赞
cdf1982
4/12/2015
@Twan 谢谢,你的答案(几乎)正是我想要的......差不多,因为我需要连接可选字符串,其中一些可能是零(所以我不想连接它们),但这个解决方案不接受可选字符串,它需要解开它们......也许您过去遇到过类似的问题,如果是这样,您能帮助我吗?
0赞
Antoine
4/12/2015
@cdf1982我已经更新了我的答案。您可以使用 filter 方法执行此操作。
0赞
cdf1982
4/12/2015
@Twan很完美,真的,真的,真的非常感谢!很抱歉,这是一个评论,我不能接受!
5赞
meda
11/4/2015
#3
从数组创建字符串:
-(NSString *)convertToCommaSeparatedFromArray:(NSArray*)array{
return [array componentsJoinedByString:@","];
}
从字符串创建数组:
-(NSArray *)convertToArrayFromCommaSeparated:(NSString*)string{
return [string componentsSeparatedByString:@","];
}
2赞
ioopl
5/14/2016
#4
迅速
var commaSeparatedString = arrayOfEntities.joinWithSeparator(",")
评论
1赞
handiansom
3/16/2017
该问题指定了一种编程语言。请考虑将其更改为目标 - c。
0赞
Aleks N.
4/12/2017
@handiansom那是2012年。
0赞
handiansom
4/12/2017
是的,我也注意到了。^ ^
评论