| 测试已测试 | ✓ |
| 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"]]