CoreDataHelper 1.1

CoreDataHelper 1.1

测试已测试
语言语言 SwiftSwift
许可 MIT
发布上次发布2016年9月
SPM支持SPM

Louis BODART 维护。



CoreDataHelper

CoreDataHelper 是一个小型 Swift 框架,它可以帮助您轻松管理主上下文中的 CoreData 对象。

安装

要安装此框架,只需将 .xcodeproj 添加到您的项目中,并不要忘记链接 .framework

如果您使用 Cocoapods,只需要在 Podfile 文件中添加 pod 'CoreDataHelper'

您想在使用代码时使用它,只需键入

import CoreDataHelper

入门

要从 CoreDataHelper 开始,非常简单。只需前往您的 AppDelegate.swift 文件,并添加以下代码

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

  CDHelper.initializeWithMainContext(self.managedObjectContext)

  return true
}

请注意,您的项目必须使用 CoreData。

创建第一个实体类

让我们创建一个名为 User 的实体,该实体包含 4 个属性

  • first_name (String)
  • last_name (String)
  • email (String)
  • age (Integer)

一旦创建了继承自 NSManagedObjectUser 类,只需添加以下 CDHelperEntity 协议

class User: NSManagedObject, CDHelperEntity {

  static var entityName: String! { return "User" } // Required

  @NSManaged var first_name: String?
  @NSManaged var age: NSNumber?
  @NSManaged var email: String?
  @NSManaged var last_name: String?
}

您只需添加 entityName 变量以符合 CDHelperEntity 协议即可。就这样!您现在可以使用所有 CoreDataHelper 的功能了!

玩转您的实体

创建新实体

有两种方式可以创建新实体。首先,您可以创建一个空的实体并在之后填充它

let user: User = User.new()
user.first_name = "John"
user.last_name = "Doe"
user.email = "[email protected]"
user.age = 42

您还可以使用数据字典创建实体

let userData: [String: AnyObject?] = [
  "first_name": "John",
  "last_name": "Doe",
  "email": "[email protected]",
  "age": 42,
]

let user: User = User.new(userData)

保存实体

要保存实体,只需使用如下所示的 .save() 方法

let user: User = User.new()
// ...
user.save()

删除实体

如果您不再需要实体,可以使用 .destroy() 方法

let user: User = User.new()
// ...
user.save()

// ... Ok, let's admit you want to delete your user
user.destroy()

检索实体

有几种不同的方式可以检索实体。

同步

findAll()
  • 基本用法
let users: [User] = User.findAll()
  • 使用排序描述符
let users: [User] = User.findAll(usingSortDescriptors: [NSSortDescriptor(key: "first_name", ascending: true)])
findOne()
let user: User? = User.findOne("first_name=\"John\"")
find()
  • 基本用法
let users: [User] = User.find("first_name=\"John\"")
  • 使用排序描述符
let users: [User] = User.find("first_name=\"John\"", usingSortDescriptors: [NSSortDescriptor(key: "first_name", ascending: true)])
  • 使用获取限制
let users: [User] = User.find("first_name=\"John\"", limit: 5)
  • 同时使用
let users: [User] = User.find("first_name=\"John\"", usingSortDescriptors: [NSSortDescriptor(key: "first_name", ascending: true)], limit: 5)

异步

asynchronouslyFindAll()
  • 基本用法
User.asynchronouslyFindAll { (results: [User]) -> Void in
  // ...
}
  • 使用排序描述符
User.asynchronouslyFindAll(usingSortDescriptors: [NSSortDescriptor(key: "first_name", ascending: true)]) { (results: [User]) -> Void in
  // ...
}
asynchronouslyFindOne()
User.asynchronouslyFindOne("first_name=\"John\"") { (user: User?) -> Void in
  // ...
}
asynchronouslyFind()
  • 基本用法
User.asynchronouslyFind("first_name=\"John\"") { (user: [User]) -> Void in
  // ...
}
  • 使用排序描述符
User.asynchronouslyFind("first_name=\"John\"", usingSortDescriptors: [NSSortDescriptor(key: "first_name", ascending: true)]) { (user: [User]) -> Void in
  // ...
}
  • 使用获取限制
User.asynchronouslyFind("first_name=\"John\"", limit: 5) { (user: [User]) -> Void in
  // ...
}
  • 同时使用
User.asynchronouslyFind("first_name=\"John\"", usingSortDescriptors: [NSSortDescriptor(key: "first_name", ascending: true)], limit: 5) { (user: [User]) -> Void in
  // ...
}