我阅读的所有教程都是在视图控制器中当场获取/保存核心数据对象,我想知道这是否只是出于简化目的,或者我是否缺少某些东西。如果我有一个核心数据类:
// User+CoreDataClass.swift
import CoreData
public class User: NSManagedObject { }
...并且我想在入职时保存用户的个人资料,是否有不创建并简单调用的原因:
let user = User()
user.save(...)
......并将我的AppDelegate参考,上下文参考,清理并直接将代码保存到User+CoreDataClass.swift
中?我可以创建一个单独的模型类,但似乎NSManagedObject
类可以用作模型,至少对于任何与 User 核心数据有关的事物而言。我最终会遇到类似这样的情况,但是我不知道是否遗漏了以后要解决的难题或问题:
// User+CoreDataClass.swift
import CoreData
public class User: NSManagedObject {
typeAlias SuccessBoolHandler = ((NSError?, Bool) -> Void)
func save(userId: String, email: String, completion: SuccessBoolHandler) {
var error: NSError?
var success = true
let user = User(entity: User.entity(), insertInto: context)
user.userId = userId
user.email = email
appDelegate.saveContext()
completion(error, success)
}
private let appDelegate: AppDelegate = {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
return appDelegate
}()
private let context: NSManagedObjectContext = {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
return appDelegate.persistentContainer.viewContext
}()
}