在iOS应用程序中处理Core Data NSManagedObjects的正确方法

时间:2013-05-03 08:07:11

标签: objective-c cocoa-touch design-patterns core-data dto

当我使用涉及数据库和ORM(对象关系管理器)的Java应用程序时,体系结构通常是分开的,因此在使用数据库层中的数据库实体时,您直接使用实体。但是,如果您需要访问GUI中的实体,您将创建实体的数据传输对象(DTO),然后在GUI层中使用它。

iOS应用程序中的首选方法是什么?

一个例子是我从Core Data中获取一个ViewController中的一些对象,然后在ViewController中的TableView中显示结果。是否有必要在显示结果之前将NSManagedObject转换为DTO?

1 个答案:

答案 0 :(得分:3)

  

iOS应用程序中的首选方法是什么?   是否有必要在显示结果之前将NSManagedObjects转换为DTO?

不,这不是必要的。托管对象已经是包装数据库实体的(通用)对象。您可以使用-valueForKey:calls来访问托管对象的属性(即实体属性)。 但首选方法是将NSManagedObject子类化以适合您的实体。在Xcode中,有一个自动生成子类的选项(editor->生成NSManagedObject子类)。这样,您可以为实体获取自己的子类对象,并可以使用点表示法访问其属性。 在获取对象时,只需让结果属于该子类的类型。

如果要向实体对象添加自定义方法,则应在托管对象子类上创建一个类别。这是因为如果你改变你的数据库方案并且必须让xcode重新创建你的子类,那么它会完全覆盖它,你的自定义方法就会丢失。