Kuery, a type-safe Core Data query API using Swift 4's Smart KeyPaths. Inspired and borrowed a lot of things from QueryKit and RealmEx.
Kuery is written in Swift 4.
Kuery is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'Kuery'
For Carthage, add the following to your Cartfile
:
github "kishikawakatsumi/Kuery"
Kuery provides type safety, code completion and avoidance of typos against NSPredicate
queries.
NSPredicate(format: "name == %@", "Katsumi")
NSPredicate(format: "age > %@", 20)
Query(Person.self).filter(\Person.name == "Katsumi")
Query(Person.self).filter(\Person.age > 20)
The following code should be a compile error.
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()
}
It requires a string representation of KeyPath
to construct NSPredicate
from KeyPath
. However, the API is not officially visible currently. The feature request is tracked at SR-5220.
[SR-5220] Expose API to retrieve string representation of KeyPath - Swift