在NSManagedObject类中获取/保存核心数据

时间:2019-05-12 13:25:24

标签: ios swift core-data

我阅读的所有教程都是在视图控制器中当场获取/保存核心数据对象,我想知道这是否只是出于简化目的,或者我是否缺少某些东西。如果我有一个核心数据类:

// 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
  }()
}

0 个答案:

没有答案