Objective-C 从对象数组创建逗号分隔字符串的最简单方法

Objective-C Simplest way to create comma separated string from an array of objects

提问人:Jhorra 提问时间:4/26/2012 最后编辑:AntoineJhorra 更新时间:2/11/2021 访问量:39677

问:

所以我有一个nsmutablearray,里面有一堆对象。我想为每个对象的 id 值创建一个逗号分隔的字符串。

objective-c 数组 swift nsmutablearray

评论


答:

172赞 rdelmar 4/26/2012 #1

使用 instance 方法。NSArraycomponentsJoinedByString:

在 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
是的,我也注意到了。^ ^