类型安全的Core Data query API - Kuery

2017-06-14      386      Swift
项目简介

Kuery

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 .

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 yourCartfile:

github "kishikawakatsumi/Kuery"

Description

Kuery provides type safety, code completion and avoidance of typos againstNSPredicatequeries.

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 error

Usage

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()
}