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

Arj*_*dav 8 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"
Run Code Online (Sandbox Code Playgroud)

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

对成员'加入()'的模糊引用

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

在此输入图像描述

vad*_*ian 9

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

发生错误是因为您正在使用flatMap.由于该数组是一个Int仅使用的非可选单级数组,map因此不使用describing初始化程序:

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

模糊性是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]
Run Code Online (Sandbox Code Playgroud)

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