2013-06-21 43 views
0

我正在使用.xibs,我想使用核心數據。最簡單的答案是在AppDelegate.h中定義@property。但我需要在xml解析器文件中填充我的模型,並且我想在許多控制器中獲取數據。所以使用[[[UIApplication sharedApplication] delegate] context]有這麼難看。 有沒有什麼好看的解決方案?如何在iOS應用程序中傳遞NSManagedObjectContext?

+1

創建一個單身'..DataManager'並已將其控制訪問數據存儲。 – Wain

+0

是的,我想過了。如果沒有任何解決方案,我會做singleton –

+1

也看看[Core Data Release Notes](http://developer.apple.com/library/mac/#releasenotes/DataManagement/RN-CoreData/index) .html):*「...嵌套上下文使得它比以往更加重要,您採用訪問上下文的」傳遞接力棒「方法(通過將上下文從一個視圖控制器傳遞到下一個視圖控制器),而不是直接從應用程序委託。「* –

回答

1

請記住,子類NSManagedObject的每個對象也都有上下文。 假設你有(經典例子)BookAuthor。這是Entitis ofc。關係1-n(一位作者 - 多本書)。

我不知道你在這裏完成了什麼,但在許多應用程序中,你有主 - 細節 - 更多細節 - ... viewControllers。所以回到示例:

可以說你的MainViewController是一個AuthorsViewController。這是一個帶有作者的tableView。你想挖掘作者,看看他寫的是什麼書。因此,在您BooksViewController你有一個模型屬性:

@property (strong,nonatomic) Author *author; 

你可以將其設置成許多不同的方式。自定義setter,從segue傳遞...不要介意。我相信這很明顯。

這樣做的好處是,在完成此操作後,您的BooksViewController中已有上下文。每當你寫:

self.author.managedObjectContext這將是正確的上下文。

所以,當你有navigationController的應用程序,你可以創建在AppDelegate或單身人士或在mainVC中的上下文。你只會調用一次,然後從NSManagedObject調用它,你會通過。

相關問題