【问题标题】:What is the difference between two initializers of NSManagedObjectNSManagedObject 的两个初始化器有什么区别
【发布时间】:2019-06-26 15:23:01
【问题描述】:

如果有人可以帮助我了解从这些初始化方法创建 NSManagedObject 子类的对象有什么区别:

init(context:)

init(entity:insertInto:)

谢谢。

【问题讨论】:

  • 阅读他们各自的文档后有什么不清楚的地方?
  • init(context:) 状态:初始化一个托管对象子类并将其插入到指定的托管对象上下文中。其中 init(entity:insertInto:) 状态:从实体描述初始化托管对象并将其插入指定的托管对象上下文。在代码中,无论哪种方式,它都会返回我的 NSManagedObject 子类的对象,没有明显区别。所以我应该改写我的问题,比如它说的是什么意思:“从实体描述初始化托管对象”与“初始化托管对象子类”。请指导。

标签: swift core-data nsmanagedobject


【解决方案1】:

这是关于隐式和显式指定实体名称

guard let appDelegate =
    UIApplication.shared.delegate as? AppDelegate else {
        return
}

let managedContext =
    appDelegate.persistentContainer.viewContext

1- 这将从CustomObj 类表示的名为Person 的实体创建一个对象,并将其插入managedContext

let entity =
    NSEntityDescription.entity(forEntityName: "Person",
                               in: managedContext)!

let person1 = CustomObj(entity: entity, insertInto: managedContext)

2- 这将从类CustomObj 创建一个对象,其中实体名称为CustomObj,并将其插入managedContext

let person2 = CustomObj(context: managedContext)

class CustomObj:NSManagedObject {

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-14
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 2017-05-01
    相关资源
    最近更新 更多