2012-04-29 55 views
0

我試圖建立coredata在我已經啓動了一個項目。我去了而其他一些錯誤,但現在已經縮小到這一點,NSInternalInconsistencyException未能找到NSManagedObjectModel爲實體名稱

***終止應用程序由於未捕獲的異常「NSInternalInconsistencyException」,原因是:「+ entityForName:無法 定位NSManagedObjectModel的實體名稱「MANUF」

我想我已經縮小的問題和可能的解答此問題並回答here回覆:亞歷克斯的回答。

但是我不能完全肯定這是對我的情況下,作爲我困惑的原因是不是在我的應用程序,委託& viewcontrollers設置了一切我其實用我的應用程序,委託&一個對象類。所以我希望有人可以幫助我隔離和修復我的問題在這裏...

這是我的對象類中的代碼段給我的問題。它與xcode爲coredata應用程序生成的模板代碼幾乎相同,但它排除了排序和tableview的東西,因爲我不需要..我只是傾銷一堆NSData到我的coredata對象。

- (NSFetchedResultsController *)fetchedResultsController 
{ 
    if (__fetchedResultsController != nil) { 
     return __fetchedResultsController; 
    } 

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
    // Edit the entity name as appropriate. 
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Manuf" inManagedObjectContext:self.managedObjectContext]; //this is the line where my code fails and generates the error in the log 
    [fetchRequest setEntity:entity]; 

    // Edit the section name key path and cache name if appropriate. 
    // nil for section name key path means "no sections". 
    NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:@"Master"]; 
    aFetchedResultsController.delegate = self; 
    self.fetchedResultsController = aFetchedResultsController; 

    NSError *error = nil; 
    if (![self.fetchedResultsController performFetch:&error]) { 
     // Replace this implementation with code to handle the error appropriately. 
     // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. 
     NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
     abort(); 
    } 

    return __fetchedResultsController; 
} 

UPDATE:

這就是我想我錯了。在模板代碼控制器和上下文設置這樣

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    // Override point for customization after application launch. 
    UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController; 
    ICDMasterViewController *controller = (ICDMasterViewController *)navigationController.topViewController; 
    controller.managedObjectContext = self.managedObjectContext; 
    return YES; 
} 

中的appdelegate內,因爲我在做我所有的東西在一個對象類,我不知道如何在我的應用程序委託初始化呢?

至於反對什麼,我想在我的appdelegate現在要做的

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    //Add status bar 
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque]; 
    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade]; 

    self.window.rootViewController = self.navigationController; //Adds RootViewController to the NavigationController interface 
    self.navigationController.navigationBar.tintColor = [UIColor grayColor]; 
    [self.window makeKeyAndVisible]; 

    //try setting up context for my nsobjectclass EngineResponses 
    EngineResponses *engineResponses = [[EngineResponses alloc] init]; 
    engineResponses.managedObjectContext = self.managedObjectContext; 

    return YES; 
} 

回答

2

上午。

有三件事情我會檢查:

1)是self.managedObjectContextnil?它可能區分大小寫:)

3當您創建協調人),是您正確的模型加載 - 您的模型描述包含一個實體,稱爲Manuf(什麼?你,如果你NSLog(@"%@", self.managedObjectContext);

2獲得)從(2)?

+0

1,是的,它是零。 2,是最挑剔的檢查了幾次,確保拼寫一個案件匹配。 3,我不確定..這是我認爲我會錯的地方..在模板xocde prog中,應用程序委託在didFinishLaunchingWithOptions中設置了控制器和上下文,我已經將它留在了atm ..因爲我不不知道如何爲對象而不是類初始化它...你有什麼想法嗎?我更新了我的問題以上我缺少的東西(這是我認爲導致此問題。)感謝回覆btw。 –

+0

(1)是的,它是零 - 好吧,它不會!你得到這個異常的原因是因爲你沒有告訴它在哪個上下文中尋找'Manuf'!您需要在嘗試使用它之前創建您的託管對象上下文;) – deanWombourne

+0

是的,這就是我現在要創建的..但我不知道如何創建它..從我可以告訴在由excode生成的模板代碼中它在appdelegate下在didFinishLanuchingWithOptions下聲明的權限? –

相關問題