gmo*_*eda 0 functional-programming ios swift
我正在尝试过滤一个具有嵌套数组 的Deals状态的DealStaus数组Bookings,每个数组都有一个BookingStatus. 我想.won根据调用函数时给出的状态过滤状态和预订的交易。BookingStatus并且DealStatus都是枚举。
Deal而Booking像这样:
public struct Deal: Decodable {
public let identifier: String?
public let status: DealStatus
public let bookings: [Booking]?
}
public struct Booking: Decodable {
public let identifier: String?
public let status: BookingStatus
public let startDate: Date?
public let endDate: Date?
}
Run Code Online (Sandbox Code Playgroud)
为此,我编写了以下代码段:
private func getDeals(with bookingStatus: [BookingStatus]) -> [Deal] {
guard let user = currentUser, let deals = user.deals else { return [Deal]() } // Note: user is a class attribute
return deals.filter { $0.status == .won && $0.bookings?.filter { bookingStatus.contains($0.status) }}
}
Run Code Online (Sandbox Code Playgroud)
这不起作用。编译器给出以下错误:
可选类型“[预订]?” 不能用作布尔值;改为测试 '!= nil'
按照@matt 的指示,我将其分解:
private func getDeals(with bookingStatus: [BookingStatus]) -> [Deal] {
guard let user = currentUser, let deals = user.deals else { return [Deal]() }
return deals
.filter { $0.status == .won }
.filter { $0.bookings?.contains(where: { bookingStatus.contains($0.status)} ) ?? false }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1210 次 |
| 最近记录: |