2010-04-22 11 views
1

這是從我以前的問題here的後續。重置模擬器解決了我之前所有的麻煩,並且我已經完成了我的應用程序。coredata在設備上使用舊文件版本

將應用程序安裝到我的iPhone設備上時,我現在有完全相同的問題。它拿起舊版本我的數據庫,它並沒有在它的第二個實體,而崩潰時,我嘗試訪問第二個實體:

2010-04-22 23:52:18.860 albumCloud[135:207] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '+entityForName: could not locate an NSManagedObjectModel for entity name 'Image'' 
2010-04-22 23:52:18.874 albumCloud[135:207] Stack: (
    843263261, 
    825818644, 
    820669213, 
    20277, 
    844154820, 
    16985, 
    14633, 
    844473760, 
    844851728, 
    862896011, 
    843011267, 
    843009055, 
    860901832, 
    843738160, 
    843731504, 
    11547, 
    11500 
) 

terminate called after throwing an instance of 'NSException' 

我有兩個問題:

1)我究竟如何從手機中徹底刪除我的應用程序以刪除舊數據? (我到目前爲止嘗試了常規的應用程序刪除,刪除,然後持有家庭和權力的重新啓動,詛咒和威脅應用程序,同時運行它...一切)

2)如何防止這種情況發生時,我應用程序在App Store中,而我由於某種原因決定要將另一個實體添加到商店中,或者將另一個屬性添加到現有實體中?有沒有「如果x不存在,然後創建它」的方法?

回答

1

要完全刪除應用程序,請按常規方法刪除應用程序,即按住,直到它搖動並點擊刪除按鈕。然後連接到iTunes。 iTunes可能會每次恢復應用程序及其備份的數據。

爲了支持以後添加新的實體,您要使用在此所說明的版本和自動重量輕遷移:

http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/vmLightweight.html#//apple_ref/doc/uid/TP40008426-SW1

基本上你使用創建數據模型的新版本Design->Data Model Xcode中的菜單項(編輯器 - >「在Xcode 4中添加模型版本」),然後進行一些代碼更改。這將導致核心數據自動將舊型號遷移到新型號。你所能做的改變是有限的。您可以添加新實體,並將可選屬性添加到現有實體,或設置具有默認值的必需屬性。

有一件事讓我意識到,當您要使用版本控制和遷移時,加載核心數據NSManagedObjectModel的方式發生了變化。如果沒有移民,你可能有這樣的:

NSManagedObjectModel *model = [NSManagedObjectModel mergedModelFromBundles:nil]; 

一旦你開始使用版本管理和遷移,這需要改變的東西是這樣的:

NSString *path = [[NSBundle bundleForClass:self.class] pathForResource:@"DataModelName" 
                   ofType:@"momd"]; 
NSURL *url = [NSURL fileURLWithPath:path]; 
NSManagedObjectModel *model = [[[NSManagedObjectModel alloc] initWithContentsOfURL:url] autorelease]; 
+0

非常感謝,這已經成爲我的鏈接列表看當我終於完成了寫作和測試。 – 2010-04-23 12:54:11

+0

「要完全刪除該應用程序,請按照常規方法刪除該應用程序,即按住該按鈕直至其擺動並點擊刪除按鈕。」我認爲這也應該起作用,但是基於我在設備上發現的核心數據錯誤,它似乎並沒有刪除舊的數據庫。這是否有可能在應用程序被刪除時舊數據庫不會被刪除? – 2011-07-08 04:22:00

相關問題