ios - 如何在 swift 4 中过滤二维模型数组,

标签 ios swift4

我是这样做的:-

    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)数组是否为空,如果是则返回 nilcompactMap 将做的是构造 block 提供的数组数组,但会忽略那些 nil 的数组。

关于ios - 如何在 swift 4 中过滤二维模型数组,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51960486/

相关文章:

ios - 在 iOS 应用程序中打开链接以关注 Google Plus 页面?

ios - NSLocalizedString 不默认为基本语言

ios - 检索/设置数组中 UIView 对象的值

ios - 如何在 UITableview 中使用两个自定义单元格

ios - 线程 1 : EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, 子代码 = 0x0) 与 Firebase

ios - 以编程方式加载另一个 View 需要时间

objective-c - CGImageRef 属性保留或不保留

ios - 调用相机时代码崩溃

ios - Swift 4 - 对成员 '>' (iOS 11) 的引用不明确

ios - 无法将类型 'Int' 的值转换为预期的参数类型 '(inout UnsafeMutableBufferPointer<_>, inout Int) throws -> Void'