lif*_*ott 3 entity core-data nsmanagedobject ios swift
我看过 2016 年关于 Core Data 的 WWDC 视频并查看了各种教程。我已经看到了使用 Core Data Framework 创建对象以持久化到 managedObjectContext 的各种方法。
在示例中,我将其Day
作为一个实体。我想Day
为用户使用该应用程序的每一天创建一个新对象。
我遇到过:
第一个选项
let entity = NSEntityDescription.insertNewObject(forEntityName: "Day", into: CoreDataHelper.context)
let object = NSManagedObject(entity: entity, insertInto: CoreDataHelper.context)
Run Code Online (Sandbox Code Playgroud)
第二个选项
let object = Day(entity: Day.entity(), insertInto: CoreDataHelper.context)
Run Code Online (Sandbox Code Playgroud)
第三个选项
let object = Day(context: CoreDataHelper.context)
Run Code Online (Sandbox Code Playgroud)
并且知道人们还提出了其他可能性。
最下面的两个选项有什么区别,因为我在 WWDC 视频中没有看到第二个选项的演示。第三个选项是自动插入到 managedObjectContext 中还是应该采取某种方法将对象插入上下文中,然后使用 NSFetchedResultsController 检索所有对象。
第二个选项是在 上的指定初始化器NSManagedObject
,它是Day
子类。
第三个选项是在Day
调用选项 2上定义的便利初始化程序。
第一个选项是废话。第一行创建了一个Day
插入上下文的实例,就像选项 2 和 3 一样。第二行尝试Day
通过将的实例Day
传递
给一个需要 的参数来创建一个实例NSEntityDescription
。我怀疑选项 1 应该是这样的:
let entity = NSEntityDescription.entity(forEntityName: "Day", in: CoreDataHelper.context)
let object = NSManagedObject(entity: entity, insertInto: CoreDataHelper.context)
Run Code Online (Sandbox Code Playgroud)
所有选项都有相同的结果。我不确定为什么会有这么多变化。这将是一个只有苹果才能回答的问题。希望这是有帮助的!
归档时间: |
|
查看次数: |
1335 次 |
最近记录: |