已弃用:QueryKit CLI 已不再需要,QueryKit 0.14.0 可与 KeyPath 一起使用,请参阅 QueryKit/QueryKit#55。
一个命令行工具,用于为您的 Core Data 模型生成扩展,包括 QueryKit 属性,以实现类型安全的 Core Data 查询。 允许您将 Xcode 生成的托管对象类与 QueryKit 一起使用。
可以通过 Homebrew 安装,如下所示
$ brew install querykit/formulae/querykit-cli
或者,您可以使用 Swift 包管理器自行构建。
$ git clone https://github.com/QueryKit/querykit-cli
$ cd querykit-cli
$ make install
您可以针对您的模型运行 QueryKit,并提供用于保存扩展的目录。
$ querykit <modelfile> <directory-to-output>
我们提供了一个使用 QueryKit CLI 工具的 示例应用程序。
$ querykit Todo/Model.xcdatamodeld Todo/Model
-> Generated 'Task' 'Todo/Model/Task+QueryKit.swift'
-> Generated 'User' 'Todo/Model/User+QueryKit.swift'
QueryKit CLI 将为您的每个托管对象子类生成一个 QueryKit
扩展,您可以将其添加到 Xcode 中,在本例中为 Task
和 User
。
这些扩展为您的模型提供了属性,用于类型安全的过滤和排序。
import QueryKit
extension Task {
static var createdAt:Attribute<NSDate> { return Attribute("createdAt") }
static var creator:Attribute<User> { return Attribute("creator") }
static var name:Attribute<String> { return Attribute("name") }
static var complete:Attribute<Bool> { return Attribute("complete") }
}
extension Attribute where AttributeType: Task {
var creator:Attribute<User> { return attribute(AttributeType.creator) }
var createdAt:Attribute<NSDate> { return attribute(AttributeType.createdAt) }
var name:Attribute<String> { return attribute(AttributeType.name) }
var complete:Attribute<Bool> { return attribute(AttributeType.complete) }
}
import QueryKit
extension User {
static var name:Attribute<String> { return Attribute("name") }
}
extension Attribute where AttributeType: User {
var name:Attribute<String> { return attribute(AttributeType.name) }
}
我们可以将这些属性与 QueryKit 结合使用,以构建类型安全的查询。 例如,在这里我们查询由名为 Kyle
的用户创建的所有已完成的任务,并按其创建日期排序。
Task.queryset(context)
.filter { $0.user.name == "Kyle" }
.exclude { $0.completed == true }
.orderBy { $0.createdAt.ascending }
您可以将自定义模板传递给 QueryKit 工具,有关语法的更多信息,请参阅标准模板。
$ querykit Todo/Model.xcdatamodeld Todo/Model --template share/querykit/template.swift