我在我的應用程序有一個奇怪的錯誤,它說:未能找到NSManagedObjectModel的實體名稱 - 通用的應用程序
*終止應用程序由於未捕獲的異常「NSInternalInconsistencyException」,原因是:「+ entityForName:可能沒有找到一個NSManagedObjectModel的實體名稱'書'
我知道,有「無法找到一個NSManagedObjectModel爲實體名稱」的頂點在這裏和在網頁上,但奇怪的是,它是一個通用的應用程序和iPhone應用程序總是正常工作,只有iPad應用程序在啓動時崩潰。
在主AppDelegate中,有兩個methodes而在iPhone/iPad上的AppDelegate我打電話這段代碼applicationdidFinishLaunchingWithOptions像這樣的代碼:
if ([self modelExists] == NO) {
[self buildModel];
}
所以它以同樣的方式我稱之爲代碼,但iPad版本崩潰,iPhone版本沒有。
唯一的不同是iPhone版本使用TabBarContoller(在IB中設置),iPad版本使用單個viewController(也在IB中設置)。
它發生在模擬器和設備上。
我不知道該怎麼做。希望你能明白我的意思...... THX很多 塞巴斯蒂安
編輯: 我發現,當我運行的iPhone版本,在主AppDelegate中的代碼被稱爲理所應當的,但是當我運行iPad版本主AppDelegate的NONE代碼被調用,所以沒有創建managedObject,這就是錯誤的原因。但爲什麼沒有代碼在主AppDelegate中運行? THX
EDIT2: 現在這是我的主要的AppDelegate代碼:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
if ([self modelExists] == NO) { // Checks if the model is allready filled up or not. (Uses CoreData stuff of course)
// iPhone Version is fine here. iPad Version crashes.
[self buildModel];
}
[self buildInterface]; // Called in the iPhone or iPad AppDelegate to make the window visible etc.
return YES;
}
所以didFinishLaunchingWithOptions是所謂的iPhone和iPad版。 iPad版本無論如何都不會運行coredata的東西,而iphone版本確實會運行coredata的東西。任何想法可能是錯的?謝謝!
iPad有核心數據中存儲髒或老版本數據的可能性?即您是否嘗試從iPad中刪除應用程序並重新安裝以驗證核心數據是否乾淨? – Rob 2011-06-15 02:08:07
Thx,但我刪除了幾次應用程序,並重置模擬器,當然做了一個乾淨的建... – wolfrevo 2011-06-15 07:09:16