在 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 子类。您仍然可以拥有property1property2,但您的初始化程序将不得不更改。对于托管对象,您必须在初始化时拥有托管对象上下文,这通常意味着将一个作为参数包含在初始化程序中。

您可能会发现值得看看 Apple 的 Core Data Programming Guide。

【讨论】:

以上是关于在 Core Data 中保存对象的主要内容,如果未能解决你的问题,请参考以下文章

在 Core Data 中保存对象

Core-Data:如何在一个关系中保存一个对象两次

如何在 RestKit 中保存到 Core Data RKMappingResult 对象?

将对象数组保存到 Core Data

Core Data 对象有时不会保存到永久存储中

使用 Restkit 在 Core Data 中删除后保存对象使其崩溃