2010-02-03 47 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

相關問題