2012-03-08 51 views
0

我現在正在iPhone上開發一個具有核心數據的應用程序。在閱讀了許多有關核心數據的項目之後,我發現核心數據代碼被嵌入到所有項目的viewController代碼中。例如:核心數據代碼必須嵌入到viewController代碼

@interface MyAppMasterViewController : UITableViewController <NSFetchedResultsControllerDelegate> 

@property (strong, nonatomic) MyAppDetailViewController *detailViewController; 

@property (strong, nonatomic) NSFetchedResultsController *fetchedResultsController; 
@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext; 

我想分裂有關的viewController從核心數據的所有代碼,並創建一個特殊的存儲類。更重要的是,提供一些方法來打包核心數據API,例如:

@interface MyAppMasterViewController : UITableViewController 
... 
... 
@interface MyAppStorageClass : NSObject <NSFetchedResultsControllerDelegate> 
@property (strong, nonatomic) NSFetchedResultsController *fetchedResultsController; 
@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext; 

(Note *)createNote; 
(BOOL)deleteNote; 

我想,如果有一天,我不希望使用核心數據存儲我的項目,我可以用低成本的替換。

以上所有,是嗎?我可以這樣做嗎?

回答

0

是的,將數據存儲代碼與用戶界面代碼分開是個好主意。我傾向於使用單一類like this來管理應用程序的數據。

0

它更好地將它分解到數據訪問對象中。代碼沒有傳播開來,易於測試(代碼覆蓋率),甚至在其他項目中也可重用。在大多數情況下,使用單例並將其放入appDelegate是有意義的。