swift-filter

CI codecov

Filter 是一个库,它可以轻松地在状态中建模过滤器,并从该状态创建谓词。

包含的产品

Filter

文档

支持过滤器建模和谓词协议的核心库。

FilterClosure 和 FilterNSPredicate 提供了实现谓词协议的良好示例。

示例

let filter = ComparableFilter<Date>.andMulti([
    .greaterThanOrEqualTo(Date.distantPast),
    .equatable(.not(.equalTo(Date.now))),
    .lessThanOrEqualTo(Date.distantFuture)
])
let nsPredicate = NSPredicate.build(from: filter)
let closure = Closure.build(from: filter)
let dates: [Date] = (Int.zero...Int.max).map { Date(timeIntervalSince1970: Double($0)) }
let filteredByClosure = dates.filter(closure)
let filteredByNSPredicate = dates.filter { nsPredicate.evaluate(with: $0) }

FilterClosure

文档

实现了强类型谓词协议,这些协议生成用于过滤的闭包

FilterNSPredicate

文档

类型擦除谓词协议的实现,这些协议生成 NSPredicate

安装

使用 Swift Package Manager 将 Filter 添加到你的 Xcode 项目中。

在 Xcode Swift 包对话框或包清单中使用来自此仓库的 https URL。