Kuery 是一个类型安全的 Core Data 查询 API,它使用 Swift 4 的 Smart KeyPaths。它的灵感和很多东西都借鉴自 QueryKit 和 RealmEx。
Kuery 使用 Swift 4 编写。
Kuery 可以通过 CocoaPods 获取。要安装它,只需将以下行添加到您的 Podfile 中
pod 'Kuery'
对于 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()
}
它需要 KeyPath
的字符串表示来从 KeyPath
构造 NSPredicate
。但是,该 API 目前未正式公开。该功能请求已在 SR-5220 中被跟踪。