FetchKit
轻量级的 Core Data 查询框架。
使用 FetchKit,您可以轻松地从 store 中获取数据而无需创建 NSFetchRequest
。
使用方法
示例 Core Data 实体
@objc(User)
class User: NSManagedObject {
@NSManaged var id: Int64
@NSManaged var firstName: String?
@NSManaged var lastName: String?
@NSManaged var salary: Int64
}
extension User: QueryProtocol { }
查找第一个
查找第一个 User
,按 firstName 排序。
let user = try? User.findFirst()
.sorted(by: \User.firstName)
.execute(in: context)
查找所有
查找所有名为 John 的 Users
。
let allJohns = try? User.findAll()
.where(\User.firstName, equals: "John")
.execute(in: context)
查找范围
let ranged = try? User.findRange(2..<5)
.sorted(by: \User.id)
.execute(in: context)
获取数量
let usersCount = try? User.getCount()
.execute(in: context)
最小值
聚合实体的最小属性值
let minId = try? User.getMin(keyPath: \User.id)
.execute(in: context)
最大值
聚合实体的最大属性值
let maxId = try? User.getMax(keyPath: \User.id)
.execute(in: context)
删除
删除所有名为John的用户
并返回数量
let deleteCount = try? User.deleteAll()
.where(\User.firstName, equals: "John")
.execute(in: context)
获取不同
获取具有指定属性和聚合函数的字典(而不是托管对象)。结果可以按属性分组(SQL GROUP BY)
let result = try User.getDistinct()
.propertiesToFetch([\User.firstName])
.aggregate(keyPath: \User.salary, function: "sum:", saveAs: "totalSalary")
.group(by: \User.firstName)
.execute(in: context)
获取结果控制器
返回 NSFetchedResultsContoller
并执行获取
let userFetchedResults = try? User.fetchResults()
.group(by: \User.firstName)
.sorted(by: \User.firstName)
.sorted(by: \User.lastName)
.execute(in: context)
需求
- iOS 8.0+ / macOS 10.9+ / tvOS 9.0+ / watchOS 2.0+
- Xcode 11.0+
- Swift 5.1+
安装
CocoaPods
使用 CocoaPods 将 FetchKit 集成到 Xcode 项目中,在您的 Podfile
中指定它
pod 'FetchKit'
许可协议
FetchKit 在 BSD 许可协议下发布。请参阅 LICENSE。