您知道如何在更改實體結構時重置iPhone仿真器上的coredata存儲?如何從iphone中刪除coredata
當我創建與上次在我的iPhone上運行的核心數據存儲區不同的新版核心數據存儲區時,是否需要執行類似的過程?如果是這樣,請怎麼辦?
感謝
您知道如何在更改實體結構時重置iPhone仿真器上的coredata存儲?如何從iphone中刪除coredata
當我創建與上次在我的iPhone上運行的核心數據存儲區不同的新版核心數據存儲區時,是否需要執行類似的過程?如果是這樣,請怎麼辦?
感謝
只是爲了方便起見,在您編寫通過應用程序刪除持久存儲區的方法之前,您只需將應用程序從手機中刪除即可。 (將手指放在主屏幕上,直到圖標變形,然後單擊應用程序上的x)。然後,將手機連接到Mac,選擇產品>在XCode中運行,然後在手機上重新安裝應用程序,但空數據目錄。
對於部署,當然,如果在部署之後(假設您將會)在更改數據模型時您需要在不刪除應用程序的情況下創建一個方法。數據遷移是最好的選擇,但如果所有其他操作都無法刪除持久性存儲文件。這樣做最好在做之前提示用戶的批准。如果他們有重要的數據,他們可能會拒絕,並可能讓舊版本的應用程序回到查看數據並手動遷移數據,或者他們可以等到您發佈修復數據遷移錯誤的2.0.1版本。
你可以看一下正在發送到persistentStoreCoordinator上設置的路徑,並刪除文件。通常,我採用的方法是將商店設置爲自動遷移,如果失敗,則刪除商店並嘗試再次創建將使用現在爲空的路徑的persistentStoreCoordinator。
不要忘記你可能需要重新填充存儲在舊數據庫中的任何東西。
嗨肯德爾:你能告訴我:1.如何設置商店自動遷移2.我如何刪除我的手機除了如何chown上面提供的商店? – Jazzmine
只需使用NSFileManager刪除文件。您可以通過谷歌搜索大量關於如何讓商店自動遷移的示例。 –
這是我用來重置我的應用內容的例程。它刪除存儲和存儲的任何其他文件。
- (void) resetContent
{
NSFileManager *localFileManager = [[NSFileManager alloc] init];
NSString * rootDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSURL *rootURL = [NSURL fileURLWithPath:rootDir isDirectory:YES];
NSArray *content = [localFileManager contentsOfDirectoryAtURL:rootURL includingPropertiesForKeys:nil options:NSDirectoryEnumerationSkipsSubdirectoryDescendants error:NULL];
for (NSURL *itemURL in content) {
[localFileManager removeItemAtURL:itemURL error:NULL];
}
[localFileManager release];
}
如果你只是想刪除的商店,因爲你知道它的文件名,你可以從枚舉文件目錄內容副歌:
- (void) resetContent
{
NSFileManager *localFileManager = [[NSFileManager alloc] init];
NSString * rootDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSURL *rootURL = [NSURL fileURLWithPath:rootDir isDirectory:YES];
NSURL *storeURL = [rootURL URLByAppendingPathComponent:@"myStore.sqlite"];
[localFileManager removeItemAtURL:storeURL error:NULL];
[localFileManager release];
}
但請注意,在許多情況下,它的更好在您更改模型時遷移商店,而不是刪除它。
但記得刪除「myStore.sqlite-shm」和「myStore.sqlite-wal」日誌文件(在iOS 7及更高版本中創建日誌模式),因爲它們佔用了大部分空間,並且在刪除Store之後他們沒用。 –
謝謝morningstar!我現在嘗試了你的第一個選擇。當它告誡我我的數據存儲也會被刪除時,我就會愛上它。只是想我想要的。 – Jazzmine