2012-01-15 26 views
4

當您有幾個視圖控制器進行類似的核心數據調用時,在使用核心數據的iPhone應用程序中使用的最佳設計是什麼?核心數據功能的最佳實踐

目前,我有哪幾種視圖控制器,所有執行添加對象的實體,刪除實體,等我算起來也有一些方法來處理這種類似功能的應用程序:

  1. 每個視圖控制器都有它自己的addItem:blah類。缺點是這種結果在類別之間的一些複製麪食

  2. 創建一個具有核心數據方法的超類,並從該類繼承。覆蓋在必要

  3. 創建類別,以便視圖控制器的所有實例都具有這些方法,而不需要繼承

  4. 創建一個數據管理單可以調用。這對我有用,這樣我可以在每個視圖控制器之外排隊請求並執行數據管理。下面是這個感覺像一個糟糕的主意一般

+0

4.爲什麼覺得不好主意? – Till 2012-01-15 19:39:57

回答

4

CoreData和ViewControllers不需要了解彼此。在MVC世界中,UIViewControllers並不是傳統的控制器。它們與Views更加緊密相關 - 我更願意在創建它們時考慮到這一點(大多數Apple示例代碼都有很多ModelController代碼 - 可能是爲了簡化示例)。

我喜歡創建ModelControllers並讓我的ViewController管理我的視圖,並且給我的ViewControllers一個我的ModelController的實例。

我的模型控制器將管理我的模型,加載,編輯,刪除等......我仍然暴露我的模型類到我的ViewControllers,但視圖永遠不離開ViewController。你永遠不會在ModelController中看到一個視圖。

這樣做的好處是,如果您稍後創建iPad應用程序 - 您的模型以及它的行爲方式完全獨立於您的ViewControllers,那麼當您爲iPad應用程序創建一些新的UIViewControllers時,您可以插入ModelControllers。

Your ModelController可以有一個擁有重複CRUD方法的父類。

或者....

稱爲MagicalRecord https://github.com/magicalpanda/MagicalRecord庫增加NSManagedObjects活動記錄模式。