我们有一个Person对象的数组,每个对象都有另一个String数组,这是可选的.我们想要在我们的社会中整合汽车名称列表.
struct Person {
let name: String
let address: String
let age: Int
let income: Double
let cars: [String]?
}
let personsArray = [Person(name:"Santosh", address: "Pune, India", age:34, income: 100000.0, cars:["i20","Swift VXI"]),
Person(name: "John", address:"New York, US", age: 23, income: 150000.0, cars:["Crita", "Swift VXI"]),
Person(name:"Amit", address:"Nagpure, India", age:17, income: 200000.0, cars:nil)]
let flatmapArray = personsArray.flatMap({$0.cars})
print(flatmapArray)
Run Code Online (Sandbox Code Playgroud)
//预期结果:["i20","Swift VXI","Crita","Swift VXI"]
//结果:[["i20","Swift VXI"],["Crita","Swift VXI"]]
为什么它不给我一个字符串数组作为结果?
我在上面的代码中做了几处更改,如下面的代码,而不是"nil",我们尝试将空数组传递给第3个Person对象.
Person(name:"Amit", address:"Nagpure, India", age:17, income: 200000.0, cars:Array())
Run Code Online (Sandbox Code Playgroud)
结果是:
[["i20","Swift VXI"],["Crita","Swift VXI"],[]]
仍然不是预期的结果.
如果我从汽车数组中删除可选,如,
let cars: [String] …Run Code Online (Sandbox Code Playgroud)