AnyQuery 0.2.0

AnyQuery 0.2.0

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最新版本2017年1月
SwiftSwift版本3.0
SPM支持SPM

Naoto Kaneko维护。



AnyQuery 0.2.0

AnyQuery

使用

AnyQuery

AnyQuery 是对任何事物的查询的表示。一个 AnyQuery 可以转换为一个 NSPredicate 和一个 Dictionary

let query = AnyQuery.Equal(key: "id", value: 1)
query.predicate   //=> NSPredicate(format: "id == 1")
query.dictionary  //=> ["id": 1]

AnyQuery 有以下类型。每种类型都可以转换为合适的对象

  • Equal(key:value:)
  • NotEqual(key:value:)
  • GreaterThan(key:value:)
  • GreaterThanOrEqual(key:value:)
  • LessThan(key:value:)
  • LessThanOrEqual(key:value:)
  • In(key:values:)
  • Between(key:lhs:rhs:)

AnyQuery 也可以通过 &&|| 运算符与其他 AnyQuery 结合。

let query = AnyQuery.Equal(key: "id", value: 1) && AnyQuery.Equal(key: "name", value: "naoty")
query.predicate   //=> NSPredicate(format: "id == 1 AND name == naoty")
query.dictionary  //=> ["id": 1, "name": "naoty"]

AnySort

AnySort 是对任何事物的排序的表示。一个 AnySort 可以转换为一个 [NSSortDescriptor] 和一个字典。

let sort = AnySort.Ascending(key: "id")
sort.sortDescriptors  //=> [NSSortDescriptor(key: "id", ascending: true)]
sort.dictionary       //=> ["sort": ["id"]]

AnyQuery 一样,AnySort 也可以通过 > 运算符与其他 AnySort 结合。

let sort = AnySort.Ascending(key: "name") > AnySort.Descending(key: "age")
sort.sortDescriptors  //=> [NSSortDescriptor(key: "name", ascending: true), NSSortDescriptor(key: "age", ascending: false)]
sort.dictionary       //=> ["sort": ["name", "-age"]]

作者

naoty