2010-02-11 70 views
1

我想在我的數據庫中有兩個完全不相關的表的等價物,爲此,我在我的核心數據模型中定義了兩個不同的實體。一個核心數據模型中的多個不相關實體

而且這一點,我有這樣一個不同的視圖控制器利用這些實體,所以我(在每個視圖控制器之一)初始化兩個不同fetchedResultsController的:

// Create the fetch request for the entity. 
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
// Edit the entity name as appropriate. 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Event" 
    inManagedObjectContext:managedObjectContext]; 
[fetchRequest setEntity:entity]; 

我要指出,基於XCode模板,MOM僅在AppDelegate中初始化一次。

這一切都很好,當我只有一個ViewController和模型中的單個實體,但即使我有第二個實體在模型中定義我無法獲得第二個ViewController初始化fetchedResultsController(再次基於XCode模板)。我總是得到以下錯誤:

2010-02-11 22:02:55.078 JournalTool[3094:207] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '+entityForName: could not locate an NSManagedObjectModel for entity name 'EventTag'' 

我可能失去了一些東西基本和做一些非常愚蠢的,但在這裏,任何幫助,將不勝感激。

感謝,
保羅

+0

您是否使用兩個取相同的託管對象上下文? (你應該) – gerry3 2010-02-11 22:12:01

+0

是的,託管對象模型和託管對象上下文都在AppDelegate中初始化一次,我只是將同一上下文傳遞給兩個ViewControllers,例如, [tagsViewController setManagedObjectContext:self.managedObjectContext]; – Paul 2010-02-11 22:20:47

+0

這可能聽起來很愚蠢,但是您是否重置了模擬器(假設您沒有在設備上運行)或者從模型中刪除應用程序?因爲將第二個實體添加到模型中?也許它仍然有舊模式。 – Don 2010-02-11 22:38:45

回答

1

這可能是你傳遞給你的第二個視圖控制器的managedObjectContext實際上是nil。調用

[tagsViewController setManagedObjectContext:self.managedObjectContext]; 

驗證self.managedObjectContext之前沒有nil

if(!self.managedObjectContext){ 
    NSLog(@"invalid managedObjectContext"); 
    // now get a valid managedObjectContext 
    // and pass it to your view controller 
} 
+0

MOC本身並非沒有,但是這讓我想到了ViewControllers的排序。我實際上是試圖通過MOC到一個子ViewController,因此它是第二個視圖控制器本身在這一點上是零。 因此,我改變了事情,以便我的子視圖從viewDidLoad方法中的parentView中檢索MOC,即self.managedObjectContext = parentViewController.managedObjectContext; 感謝您解決此問題的幫助,非常感謝。 – Paul 2010-02-11 23:28:24

+2

爲了避免這種問題,我總是直接從應用程序委託中獲取managedObjectContext,該應用程序委託在任何我實例化的視圖控制器中始終可用。 – 2010-02-11 23:46:36

+0

這是個好主意,聽起來更安全。將來我會確保所有ViewController都有對AppDelegate的引用,然後我將直接在viewDidLoad方法中檢索它。再次感謝。 – Paul 2010-02-11 23:49:37

相關問題