【发布时间】:2012-05-06 19:01:34
【问题描述】:
所以我有一个 nsmutablearray,里面有一堆对象。我想为每个对象的 id 值创建一个逗号分隔的字符串。
【问题讨论】:
标签: objective-c arrays swift nsmutablearray
所以我有一个 nsmutablearray,里面有一堆对象。我想为每个对象的 id 值创建一个逗号分隔的字符串。
【问题讨论】:
标签: objective-c arrays swift nsmutablearray
斯威夫特
var commaSeparatedString = arrayOfEntities.joinWithSeparator(",")
【讨论】:
使用NSArray实例方法componentsJoinedByString:。
在 Objective-C 中:
- (NSString *)componentsJoinedByString:(NSString *)separator
在斯威夫特中:
func componentsJoinedByString(separator: String) -> String
示例:
在 Objective-C 中:
NSString *joinedComponents = [array componentsJoinedByString:@","];
在斯威夫特中:
let joinedComponents = array.joined(seperator: ",")
【讨论】:
[<NSArray instance> valueForKey:@"<string representation of property name>"],它会返回一个只有那个属性的数组。然后在结果上调用componentsJoinedByString:。在幕后,框架正在遍历数组中的所有对象并对它们调用valueForKey:。键值编码太棒了!
从数组创建字符串:
-(NSString *)convertToCommaSeparatedFromArray:(NSArray*)array{
return [array componentsJoinedByString:@","];
}
从字符串创建数组:
-(NSArray *)convertToArrayFromCommaSeparated:(NSString*)string{
return [string componentsSeparatedByString:@","];
}
【讨论】:
如果你在 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 != ""
}
【讨论】: