2012-04-23 62 views
2

另一個人曾經呆了好幾個小時。我有一個主要問題讓我的應用程序'看到'我的數據庫中的實體...從另一個ViewController(核心數據)訪問「實體」

我已經在我的appDelegate中創建代碼來設置核心數據。我啓動的第一個視圖可以訪問這些數據(讀/寫),沒有任何問題。如果我然後嘗試從另一個viewController訪問數據庫,就好像它不存在一樣。

我擁有所有正確的@財產在我的viewController頭文件設置:

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

我也有各自的viewController是:

NSFetchedResultsControllerDelegate 
  • 我已經導入相關的頭.m文件中我想訪問該實體的文件。

這是我的錯誤:

'+entityForName: could not locate an NSManagedObjectModel for entity name MyEntityName' 

混亂的事情是,如果我從的appDelegate改變啓動的觀點是沒有問題,看到在任何視圖控制器我選擇的實體。它似乎是「注入」到第一個,但那就是多數民衆贊成在它。

我猜我需要設置/分配init NSManagedObject並將其引回到我的實體,但我不知道如何做到這一點。

任何線索?

感謝

+0

你是如何傳遞managedObjectContext到viewControllers什麼?我看到你的財產,但你真的分配它? – 2012-04-23 14:59:07

+0

嗨保羅......我不認爲我現在把它們歸還給任何東西。我該怎麼做呢? – 2012-04-23 15:06:26

+0

也......是傳遞managedObjectContext的'正確的方式',或者我應該爲每個viewController創建新的? – 2012-04-23 15:07:25

回答

1

所以我想你需要做的是通過managedObjectContext這樣

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender; 
{ 
    if ([[segue identifier] isEqualToString:@"theIdentifier"]) { 
     UINavigationController *navigationController = (id)[segue destinationViewController]; 

     MySecondViewController *topViewController = [navigationController topViewController]; 
     topViewController.managedObjectContext = self.managedObjectContext; 
    } 
} 
+0

啊我沒有意識到你通過segue像其他數據通過它...哎呀! – 2012-04-23 15:36:47

+0

這個修復了嗎? – 2012-04-23 15:46:47

+0

nope :(它現在說:UINavigationController setManagedObjectContext:]:無法識別的選擇器發送到實例 – 2012-04-23 15:51:37

相關問題