我尝试删除数组中的nil个对象,当我生成对象时,我会这样做:
static func books(fromDictArray array: [[String: Any]]) -> [Books?] {
return array.map(GettyTwo.init)
}
我在这里尝试仅使用非零对象:
let inventoryBooks = [Books.books(fromDictArray: arrayOfBooks)].flatMap{$0} //this doesn't remove the nil objects
但如果我这样做:
let noNilElements = inventoryBooks.flatMap{$0}
这将删除nil个对象。
我向你们提出的问题是为什么这不起作用:
let inventoryBooks = [Books.books(fromDictArray: arrayOfBooks)].flatMap{$0}
我做错了什么?
答案 0 :(得分:2)
你不应该在[]中拥有它。而是尝试:
let inventoryBooks = Books.books(fromDictArray: arrayOfBooks).flatMap{$0}
拥有它是[]正在创建一个包含一个项目的数组,即fromDictArray调用的结果。所以它的结构类似于[[1,2,3]],而不是[1,2,3]。因此,当您调用flatmap时,它会检查一个项目,该项目不是,并且返回它。