如何将字符串数组连接成单个字符串Swift 4

时间:2017-09-23 10:24:53

标签: arrays swift swift4

在swift 4之前我正在使用一个字符串数组连接成一个字符串,这段代码运行得很好。

let array = ["Andrew", "Ben", "John", "Paul", "Peter", "Laura"]
let joined = array.joined(separator: ", ")

 //output:- "Andrew, Ben, John, Paul, Peter, Laura"

但现在在swift 4和Xcode 9显示以下错误

  

对成员'加入()'

的模糊引用

我的问题是如何加入数组的所有元素?

enter image description here

1 个答案:

答案 0 :(得分:9)

这是一个典型的例子,其中问题中的伪代码具有误导性,并且不会重现错误。

发生错误是因为您使用的是flatMap。由于数组是Int的非可选单级数组,因此只需使用map并且不要使用describing初始化程序:

func getNumbers(array : [Int]) -> String {
    let stringArray = array.map{ String($0) }
    return stringArray.joined(separator: ",")
}

模糊性是应用于非可选序列的flatMap具有不同的含义:

来自文档

let numbers = [1, 2, 3, 4]

let mapped = numbers.map { Array(count: $0, repeatedValue: $0) } 
// [[1], [2, 2], [3, 3, 3], [4, 4, 4, 4]]

let flatMapped = numbers.flatMap { Array(count: $0, repeatedValue: $0) }
 // [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
     

事实上,s.flatMap(transform)相当于Array(s.map(transform).joined())