Swift 3 核心数据 - Entity(context:) vs Entity(entity: Location.entity(), insertInto: context)
Swift 3 Core Data - Entity(context:) vs Entity(entity: Location.entity(), insertInto: context)
我观看了 2016 WWDC Core Data 视频并查看了各种教程。我已经看到了使用核心数据框架创建对象以持久保存到 managedObjectContext 中的各种方法。
在示例中,我将 Day
作为一个实体。我想为用户使用该应用程序的每一天创建一个新的 Day
对象。
我遇到过:
第一个选项
let entity = NSEntityDescription.insertNewObject(forEntityName: "Day", into: CoreDataHelper.context)
let object = NSManagedObject(entity: entity, insertInto: CoreDataHelper.context)
第二个选项
let object = Day(entity: Day.entity(), insertInto: CoreDataHelper.context)
第三个选项
let object = Day(context: CoreDataHelper.context)
并且知道人们还想出了其他的可能性。
下面两个选项有什么区别,因为我在WWDC视频中没有看到第二个选项的演示。第三个选项是自动插入到 managedObjectContext 中,还是应该采取某种方法将对象插入到上下文中,然后使用 NSFetchedResultsController 检索所有对象。
第二个选项是 NSManagedObject
上的指定初始值设定项,它是 Day
的子类。
第三个选项是在 Day
上定义的便利初始值设定项,它调用选项 2。
第一个选项是废话。第一行创建一个插入上下文的 Day
实例,就像选项 2 和 3 一样。第二行尝试通过传递 [=] 的实例来创建 Day
的实例12=]
到需要 NSEntityDescription
的参数。我怀疑选项 1 应该是这样的:
let entity = NSEntityDescription.entity(forEntityName: "Day", in: CoreDataHelper.context)
let object = NSManagedObject(entity: entity, insertInto: CoreDataHelper.context)
所有选项都具有相同的结果。我不确定为什么会有这么多变化。这是一个只有 Apple 才能回答的问题。希望这对您有所帮助!
我观看了 2016 WWDC Core Data 视频并查看了各种教程。我已经看到了使用核心数据框架创建对象以持久保存到 managedObjectContext 中的各种方法。
在示例中,我将 Day
作为一个实体。我想为用户使用该应用程序的每一天创建一个新的 Day
对象。
我遇到过:
第一个选项
let entity = NSEntityDescription.insertNewObject(forEntityName: "Day", into: CoreDataHelper.context)
let object = NSManagedObject(entity: entity, insertInto: CoreDataHelper.context)
第二个选项
let object = Day(entity: Day.entity(), insertInto: CoreDataHelper.context)
第三个选项
let object = Day(context: CoreDataHelper.context)
并且知道人们还想出了其他的可能性。
下面两个选项有什么区别,因为我在WWDC视频中没有看到第二个选项的演示。第三个选项是自动插入到 managedObjectContext 中,还是应该采取某种方法将对象插入到上下文中,然后使用 NSFetchedResultsController 检索所有对象。
第二个选项是 NSManagedObject
上的指定初始值设定项,它是 Day
的子类。
第三个选项是在 Day
上定义的便利初始值设定项,它调用选项 2。
第一个选项是废话。第一行创建一个插入上下文的 Day
实例,就像选项 2 和 3 一样。第二行尝试通过传递 [=] 的实例来创建 Day
的实例12=]
到需要 NSEntityDescription
的参数。我怀疑选项 1 应该是这样的:
let entity = NSEntityDescription.entity(forEntityName: "Day", in: CoreDataHelper.context)
let object = NSManagedObject(entity: entity, insertInto: CoreDataHelper.context)
所有选项都具有相同的结果。我不确定为什么会有这么多变化。这是一个只有 Apple 才能回答的问题。希望这对您有所帮助!