转换swift 3项目以使用CoreData

时间:2016-11-30 15:11:35

标签: swift macos cocoa core-data cocoa-bindings

我对Swift和Cocoa世界相对较新,并希望得到人们对于如何设计以下数据模型的最佳方式的看法:

我目前有一个macOS原型项目,它有以下(简化)数据模型:

class Loan: NSObject, XMLParseDelegate {
   var id: Int
   var address: Address
   // ... other properties and methods
   func parseZillow() {
   // bunch of code, etc
   }
}

其中Address是另一个具有自己的属性和方法的类结构。然后我使用Cocoa Bindings绑定到LoanNSArrayController的数组[NSTableView](一切都很好,除了现在我想在图片中引入持久存储)

现在(两部分)问题:

1)如果我用CoreData模型表示这个结构 - 我如何表示loan.address路径的嵌套类结构?我在CoreData(贷款和地址)中只有2个实体,并且两者之间有一对一的关系吗?这是最好的做法吗?

2)我对CoreData的理解是,不使用[Loan]数组作为我的数据模型,CoreData将成为新的数据模型(并将创建一个代表我的数据模式的托管对象,类似于我拥有的目前作为我的class Loan对象。我在哪里定义我目前对LoanAddress类的方法?我是否需要在MO之上创建一个包装类?我我看了很多教程,但这部分仍然不清楚

1 个答案:

答案 0 :(得分:0)

  1. 是的,您可以拥有两个实体,贷款和地址。如果每笔贷款都有一个地址,每个地址都有一笔贷款,那么这种关系就是一对一的。如果一个地址可以有多个贷款,那么这种关系是多对一的。

  2. 来自Creating and Saving Managed Objects

  3.   

    创建NSManagedObject子类

         

    默认情况下,Core Data会将NSManagedObject实例返回给您的应用程序。但是,为模型中的每个实体定义NSManagedObject的子类很有用。具体来说,在创建NSManagedObject的子类时,可以定义实体可用于代码完成的属性,并且可以为这些子类添加便捷方法。

         

    要创建NSManagedObject的子类,请在Xcode的Core Data模型编辑器中选择实体,然后在“数据模型”检查器的“实体”窗格中,在“类”字段中输入名称。然后在Xcode中创建子类(AAAEmployeeMO)。

    '创建NSManagedObject子类...'在编辑器菜单中。您可以一次创建所有子类。您可以将方法添加到NSManagedObject子类。