2012-09-14 106 views
0

我有一個項目在我爲iOS 4.x構建時工作正常,但是當我爲iOS 5.x構建它時發生崩潰而失敗。爲了澄清,4.x版本可以在iOS 5.1上正常運行,但是當我針對5.0或5.1進行編譯時,我會遇到下面描述的崩潰。NSManagedObjectMOdel無法在iOS 5及更高版本上初始化

- (NSManagedObjectModel *)managedObjectModel 
{ 
    if (__managedObjectModel == nil) 
    { 
     __managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain]; //crash 
    } 

    return __managedObjectModel; 
} 

我查了文檔,按說供給nil作爲參數應該是默認的主束。任何人都知道如果CoreData發生任何變化,會導致這種情況發生?

對於什麼是值得的,我運行了「分析」工具,沒有內存泄漏或任何不尋常的報告。

回答

1

我已經設法拿出一個工作。我創建了一個新的單視圖項目,然後複製生成的代碼以將託管對象模型初始化爲我的新項目。我的預感是,[[NSManagedObjectModel mergedModelFromBundles:nil]在iOS 5.1 SDK中的工作方式不同,也許它無法找到我的數據模型,因爲它沒有存儲在項目根目錄中,而是一個單獨的「數據」文件夾。

- (NSManagedObjectModel *)managedObjectModel 
{ 
    if (__managedObjectModel != nil) 
    { 
     return __managedObjectModel; 
    } 
    NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"PreferencesModel" withExtension:@"momd"]; 
    __managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]; 
    return __managedObjectModel; 
} 
+0

但無法在ios 4.3中使用上面的代碼。 –

相關問題