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 个属性
一旦创建了继承自 NSManagedObject
的 User
类,只需添加以下 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()
有几种不同的方式可以检索实体。
let users: [User] = User.findAll()
let users: [User] = User.findAll(usingSortDescriptors: [NSSortDescriptor(key: "first_name", ascending: true)])
let user: User? = User.findOne("first_name=\"John\"")
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)
User.asynchronouslyFindAll { (results: [User]) -> Void in
// ...
}
User.asynchronouslyFindAll(usingSortDescriptors: [NSSortDescriptor(key: "first_name", ascending: true)]) { (results: [User]) -> Void in
// ...
}
User.asynchronouslyFindOne("first_name=\"John\"") { (user: User?) -> Void in
// ...
}
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
// ...
}