2011-10-04 60 views
1

我在iOS中使用CoreData。 我有一個模式的AddViewController,以一個RootViewController作爲委託。核心數據代表保存模式

我應該在根控制器中還是在實際的模態控制器本身中保存受管對象上下文?

我看到將數據傳遞迴rootViewController的示例,但無法看到這將如何與數據驗證失敗或需要託管對象上下文的更復雜的情況一起工作。

// AddViewController.m 

- (void)save 
{ 
    [[self delegate] controller:(id)controller didFinishWithSave:(BOOL)save withName(NSString *)name; 
} 

// RootViewController.m 

- (void)controller:(id)controller didFinishWithSave:(BOOL)save 
{ 
    if (save) 
    { 
    // save context 
    } 
    [self dismissModalViewControllerAnimated:YES]; 
} 

就在此刻,我正在使用委託協議解散模態。 有關最佳實踐的任何建議? 謝謝

回答

0

我知道這有點晚了,但對於遇到此問題的其他人,我會在Levend的答案中再增加一點。

是的,你應該有一個單獨的管理類來處理操作(可能是類本身)。

我會認爲,如果你的模態需要處理驗證,在調用委託之前,它會驗證對象。如果有錯誤,你可以在那裏處理。如果它通過驗證,那麼你可以將有效的對象傳遞給委託。因此,代表可以假設任何傳遞給它的對象都是有效的。

至於你應該保存哪一類,我認爲這只是一個偏好。但是我建議你在覈心數據模型本身有一個保存方法。

我最近遇到的是mogenerator,它應該可以幫助管理CoreData類。我還沒有累,但聽起來不錯。

0

從架構的角度來看,您應該創建一個單獨的管理員類負責核心數據操作。從技術角度來看,只要您在數據源所在的同一個線程上執行操作,則無需保存(root或modal VC)。

0

考慮到MVC,我會讓M(odel)執行上下文的保存以及從中讀取數據。