我是这样做的:-
let dataToSend = self.allOrders.filter { (ordersForOneDate) -> Bool in
return ordersForOneDate.filter({ (myOrder) -> Bool in
if myOrder.is_request == "1" &&
myOrder.order_status != "confirmed" &&
myOrder.order_status != "completed" {
return true
} else {
return false
}
})
}
但是出现错误
Cannot convert value of type '[MyOrdersModel]' to closure result type 'Bool'
最佳答案
如果你想从二维数组中过滤掉项目,那么你需要映射外部数组而不是过滤它。您也可以删除空数组。尝试类似的东西:
func filterMy2DArray(allOrders: [[Order]], includesEmptyArrays includeEmpty: Bool = false) -> [[Order]] {
let dataToSend: [[Order]] = allOrders.compactMap { ordersForOneDate in
let filtered = ordersForOneDate.filter({ myOrder in
if myOrder.is_request == "1" &&
myOrder.order_status != "confirmed" &&
myOrder.order_status != "completed" {
return true
} else {
return false
}
})
if includeEmpty {
return filtered
} else {
return filtered.isEmpty ? nil : filtered
}
}
return dataToSend
}
所以现在内部数组被过滤以获取您想要的项目。然后检查(if includeEmpty
if false)数组是否为空,如果是则返回 nil
。 compactMap
将做的是构造 block 提供的数组数组,但会忽略那些 nil
的数组。
关于ios - 如何在 swift 4 中过滤二维模型数组,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51960486/