FetchKit 1.4.1

FetchKit 1.4.1

测试已测试
Lang语言 SwiftSwift
许可证 BSD-2-Clause
发布上次发布2019年11月
SPM支持 SPM

Anton Agarunov 维护。



FetchKit 1.4.1

  • By
  • Anton Agarunov

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