在 Core Data 中保存对象
Posted
技术标签:
【中文标题】在 Core Data 中保存对象【英文标题】:Save object in Core Data 【发布时间】:2017-02-13 13:19:07 【问题描述】:假设我的课程看起来像这样:
class A
var property1:Int
var property2:String
init(property1: Int, property2: String)
self.property1 = property1
self.property2 = property2
(...)
let a = A(property1: 10, property2: "Smth")
这是将该对象保存在 CoreData
中的方法吗?我是否必须通过 NSManageObject Subclass 创建具有此名称的新类,然后从头开始执行所有操作?或者有一种方法可以转换类以匹配它而不进行更改?顺便提一句。在最新更新中通过这个生成器是一个错误,它说这些类是模棱两可的:o
提前致谢!!
【问题讨论】:
核心数据类(实体)必须是NSManagedObject
。生成器不是错误,很可能是用户设置错误。
【参考方案1】:
您确实需要有一个NSManagedObject
或一个子类,但您不能有两个同名的类。使用 Core Data,您通常在 Core Data 模型编辑器中定义一个实体类型,然后创建一个子类来匹配该实体(这些天 Xcode 通常会自动创建子类)。
拥有第二个非托管类来反映 Core Data 对象是非常不寻常的。您可以单独使用NSManagedObject
子类。您仍然可以拥有property1
和property2
,但您的初始化程序将不得不更改。对于托管对象,您必须在初始化时拥有托管对象上下文,这通常意味着将一个作为参数包含在初始化程序中。
您可能会发现值得看看 Apple 的 Core Data Programming Guide。
【讨论】:
以上是关于在 Core Data 中保存对象的主要内容,如果未能解决你的问题,请参考以下文章