NSPredicateObjectMapper
在 NSPredicate 之上构建包装器,为 NSManagedObject 提供对象访问权限和请求链式调用。
编写 NSPredicate 的魔法字符串并不理想,我希望像 C# 在 EntityFramework 中一样从 LINQ 获得与 Core Data 相同的体验。Objective 保护类型,限制您可以或可以不操作的类型,在每个请求后建议相关操作选择,并消除输入错误的可能。框架轻量且文档完善。
安装
NSPredicateObjectMapper 通过 CocoaPods 提供。要安装它,只需将以下行添加到 Podfile 中
pod 'NSPredicateObjectMapper'
用法示例
要运行示例项目,请先克隆存储库,然后在 Example 目录中运行 pod install
让我们有一个名为 Car 的实体,具有 id、品牌、... 属性,我想获取所有以 "s" 开头的品牌缩写的车辆
fetchRequest.predicate = NSPredicate(format: "brand BEGINSWITH[c] 's'")
和对象包装器
fetchRequest.predicate = Car.where(\Car.brand).beginsWith("s", caseInsensitive: true).predicate()
链式请求
fetchRequest.predicate = Car.where(\Car.brand).beginsWith("s").and.where(\Car.brand).endsWith("a").predicate()
需求
Swift >= 5.0
开发路线图
- CocoaPods 分发
- 支持子查询 (SUBQUERY(tasks, $task, $task.completionDate != nil AND $task.user = 'Alex') .@count > 0")
- 支持数组操作 (array[index], array[FIRST], ...)
- 支持集合查询 (@avg, @count, ...)
作者
Ondřej Pišín, [email protected]
许可
NSPredicateObjectMapper 在 MIT 许可下提供。更多信息请参阅 LICENSE 文件。