将Core Data与对象一起使用?

时间:2010-02-03 13:55:02

标签: cocoa macos core-data

这是一个初学者的问题:我在CoreData上看到的每个教程都专注于数据库支持的存储。他们都开始绘制一个关系和诸如此类的对象模型。

但我的应用程序将像一个简单的绘图应用程序,想想Illustrator light或OmniGraffle。我在页面的内存中有一个对象,然后是绘制元素的几个子对象。你会如何使用CoreData?

我不需要完成代码只是指针或想法。

谢谢!

2 个答案:

答案 0 :(得分:7)

每个程序设计都以数据模型开始(或应该开始)。数据模型不仅存储程序的数据,还存储数据之间的逻辑关系。数据模型是程序的内容,其他所有内容都是一个或多个以某种方式显示数据模型的接口。

以绘制多边形的简单绘图程序为例。从逻辑上讲,程序将以文档开头。在核心数据中,这将由数据模型中的文档实体表示,并且可能是NSManagedObject子类。该文档反过来将包含(关系)一个或多个页面。页面还有一个实体和一个子类。这些页面将保存有关物理页面的数据,例如页边距,页脚,页眉等。页面也会保存多边形。每个多边形实体 - 子类将保持具有绘制多边形所需的信息,例如,顶点的点。

当用户绘制时,控制器层会将命令和屏幕位置转换为数据模型中的数据,然后根据需要再次退出。

使用核心数据构建数据模型有许多优点。

  • 核心数据可自动管理难以手动跟踪的非常复杂的逻辑关系。
  • 创建自动撤消系统
  • 可以更轻松地在程序的不同部分之间传输数据(在这种情况下绘制)或导出图形的子部分。
  • 它将数据与任何特定接口分离。例如,您可以通过编写另一个控制器将绘图输出到LaTex或flash。
  • 可以轻松编写应用程序脚本。只需以编程方式使用数据模型而不是用户界面创建脚本界面。

据我所知,Omnigraffle基于核心数据,所以如果你想要一个像核心数据这样的应用程序绝对是可行的方法。

答案 1 :(得分:3)

核心数据需要定义对象图的模型,无论您使用的是持久性存储还是内存存储。你一定要阅读Core Data Programming Guide