2010-02-03 57 views
1

这是一个初学者的问题:我在CoreData上看到的每个教程都关注数据库支持的存储。他们都开始绘制一个具有关系和对象的对象模型。将CoreData与对象一起使用?

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

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

谢谢!

+0

Core Data可以将数据库用作其持久存储类型之一的事实并不意味着它仅限于数据库类型的应用程序。您可以(也可能应该)将它用于几乎任何类型的应用程序,因为它使数据建模,迁移和持久性变得非常简单明了。唯一的缺点是学习曲线相当陡峭。 – 2010-02-04 09:06:36

回答

7

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

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

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

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

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

这是我的理解Omnigraffle是基于核心数据,所以如果你想要一个像这样的应用程序核心数据肯定是要走的路。

+0

优秀的描述!它总是令我惊讶,有多少程序员不明白或不知道数据模型是什么。值得指出的是,数据库模式不是数据模型 - 很多人犯这个错误。 – 2010-02-03 20:07:23

+0

我想我犯了同样的错误。谢谢你的解释! – Ron 2010-02-04 10:48:00

3

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

相关问题