0
我已經在使用SQLlite數據庫的地方創建了一個應用程序......如果需要,我在第一次啓動應用程序時使用以下方法將該數據庫複製到NSCaches目錄中:如何覆蓋iOS中的SQLite數據庫
- (void) copyDatabaseIfNeeded {
//Using NSFileManager we can perform many file system operations.
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSString *dbPath = [self getDBPath];
BOOL success = [fileManager fileExistsAtPath:dbPath];
if(!success) {
NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"datenbankSpeed"];
success = [fileManager copyItemAtPath:defaultDBPath toPath:dbPath error:&error];
if (!success)
NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]);
}
}
- (NSString *) getDBPath {
//Search for standard documents using NSSearchPathForDirectoriesInDomains
//First Param = Searching the documents directory
//Second Param = Searching the Users directory and not the System
//Expand any tildes and identify home directories.
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory , NSUserDomainMask, YES);
NSString *documentsDir = [paths lastObject];
return [documentsDir stringByAppendingPathComponent:@"datenbankSpeed"];
}
我的問題是,如果我在數據庫 - 文件改變某事,併爲我的客戶一個新的應用程序文件,他們安裝新的應用程序在舊的應用程序,但舊的數據庫仍在使用,這會導致崩潰!
我想你可以使用'PRAGMA user_version'來達到這個目的。 – 2013-04-29 17:22:16
感謝您的信息。你應該添加一個解釋如何使用它的答案。 – Mar0ux 2013-04-29 17:24:33
是的,這聽起來不錯,但如何完全在我的copyDatabaseIfNeeded ?!你能給個例子嗎?! – davidOhara 2013-04-29 17:29:53