测试已测试 | ✓ |
Lang语言 | SwiftSwift |
许可证 | MIT |
发布最新版本 | 2017年1月 |
SwiftSwift版本 | 3.0 |
SPM支持SPM | ✗ |
由Naoto Kaneko维护。
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
可以转换为一个 [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"]]