Kuery 0.3.0

Kuery 0.3.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布日期最后发布2017年9月
SwiftSwift 版本4.0
SPM支持 SPM

kishikawa katsumi维护。



Kuery 0.3.0

Kuery

Kuery,使用 Swift 4 的 Smart KeyPaths 的类型安全 Core Data 查询 API。受QueryKitRealmEx的启发,借鉴了很多东西。

要求

Kuery 使用的是 Swift 4。

描述

Kuery 提供了对 NSPredicate 查询的类型安全、代码补全和防错。

之前

NSPredicate(format: "name == %@", "Katsumi")
NSPredicate(format: "age > %@", 20)

之后

Query(Person.self).filter(\Person.name == "Katsumi")
Query(Person.self).filter(\Person.age > 20)

以下代码应是一个编译错误。

Query(Person.self).filter(\Person.name > 20) // Compile error
Query(Person.self).filter(\Dog.name == "John") // Compile error

用法

context.perform {
    let results = try Query(Person.self)
        .filter(\Person.name == "Katsumi")
        .execute()
}
context.perform {
    let results = try Query(Person.self)
        .filter(\Person.age == 36)
        .execute()
}
context.perform {
    let results = try Query(Person.self)
        .filter(\Person.age > 20)
        .execute()
}
context.perform {
    let results = try Query(Person.self)
        .filter(\Person.name == "Katsumi")
        .filter(\Person.age == 36)
        .execute()
}
context.perform {
    let results = try Query(Dog.self)
        .filter(\Dog.owner == person)
        .execute()
}

对 Swift 标准库的功能请求

它需要一个 KeyPath 的字符串表示来从 KeyPath 构建一个 NSPredicate。然而,此 API 目前不是官方可见的。功能请求的跟踪在 SR-5220

[SR-5220] 提供获取 KeyPath 的字符串表示的 API - Swift