Kuery

Build Status Codecov Pods Version Platforms Carthage Compatible Swift 4.0 Swift 4.1 Swift 4.2

Kuery 是一个类型安全的 Core Data 查询 API,它使用 Swift 4 的 Smart KeyPaths。它的灵感和很多东西都借鉴自 QueryKitRealmEx

需求

Kuery 使用 Swift 4 编写。

安装

CocoaPods

Kuery 可以通过 CocoaPods 获取。要安装它,只需将以下行添加到您的 Podfile 中

pod 'Kuery'

Carthage

对于 Carthage,将以下内容添加到您的 Cartfile

github "kishikawakatsumi/Kuery"

描述

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] 公开 API 以检索 KeyPath 的字符串表示 - Swift