2009-12-06 41 views
1

我使用自定義界面製作Cocoa應用程序。到目前爲止,我已經實現了使用CALayer進行渲染的一個應用程序版本,這對於CALayers的層次結構以及處理鼠標事件的[hitTest:]函數非常有用。在這個早期版本中,應用程序的模型是我的自定義類。Core Data + Core Animation/CALayer在一起嗎?

但是,隨着程序的增長,我感受到使用Core Data作爲模型的願望,不僅僅是爲了簡化綁定/撤銷管理,還希望嘗試新技術。

我到目前爲止方法:

在覈心數據:創建實體,與屬性XPOS,yPos,寬度,高度 ...等。

然後,創建一個BlockView用來:CALayer的類圖,它採用的方法,例如self.position.x = [自valueForKey:@ 「XPOS」]從模型獲取的值。

在這種情況下,每BlockView用來對象必須也保持XPOS,這是不好的本地副本。

你們有沒有更好的建議?

編輯: 這個程序是一個信息可視化工具。所以塊的位置,尺寸很重要,應該保留以備後續分析。

回答

1

是否正在編輯和保存這些「塊」的位置和大小,以完成您的應用存在的任務?

如果沒有,該信息可能不應該在您的模型中。

+0

是的。這些塊的位置是爲了以後分析而保存的。 – ivanTheTerrible 2009-12-06 07:05:31

0

那麼在你的實現中,每個BlockView都有它自己的x?

爲什麼不讓BlockView類保持對塊的引用?

該視圖可以用它用來設置它的位置的塊初始化。

這可以讓視圖類和模型保持良好的分離。

1

使用核心數據來存儲圖形對象的實際運行時間位置不是一個好主意。這樣做直接將數據模型與視圖混合。這將使應用難以調試和維護,並且會使其組件重複使用的可用性大大降低。

相反,當創建視圖對象時,應該有核心數據向視圖控制器提供任何預先存在的位置數據,然後在處理完成時保存數據。

理想情況下,無論使用什麼樣的持久性存儲方法,持久存儲方法都應該工作,無論用於顯示數據的視圖類型如何,視圖都應該可以工作。例如,對於使用Web視圖的視圖,使用Core Animation甚至純文本輸出的視圖,您應該能夠使用相同的數據模型。