kishikawakatsumi/kuery
alt="Build Status">
Requirements
Kuery is written in Swift 4.
Installation
CocoaPods
Kuery is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'Kuery'Carthage
For Carthage, add the following to your Cartfile:
github "kishikawakatsumi/Kuery"Description
Kuery provides type safety, code completion and avoidance of typos against NSPredicate queries.
Before
NSPredicate(format: "name == %@", "Katsumi")
NSPredicate(format: "age > %@", 20)After
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 errorUsage
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()
}Feature request for Swift Standard Library
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](https://bugs.swift.org/browse/SR-5220)
Package Metadata
Repository: kishikawakatsumi/kuery
Default branch: master
README: README.md