Kuery,使用 Swift 4 的 Smart KeyPaths 的类型安全 Core Data 查询 API。受QueryKit和RealmEx的启发,借鉴了很多东西。
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()
}
它需要一个 KeyPath
的字符串表示来从 KeyPath
构建一个 NSPredicate
。然而,此 API 目前不是官方可见的。功能请求的跟踪在 SR-5220。