我在我的應用程序中編寫了一個重置函數,它將使用某些預先填充的數據將我的sqlite數據庫恢復到其原始狀態。下面的代碼將從數據庫目錄中刪除數據庫並從數據包複製數據庫,但數據仍舊從舊數據庫中出現?將sqlite數據庫重置爲默認值
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"MoneyMonthly.sqlite"];
if([[NSFileManager defaultManager] fileExistsAtPath:filePath]){
[[NSFileManager defaultManager] removeItemAtPath:filePath error:nil];
}
BOOL success;
NSFileManager *fileManager = [NSFileManager defaultManager]; NSError *error;
NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"MoneyMonthly.sqlite"];
NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"MoneyMonthly.sqlite"];
success = [fileManager copyItemAtPath:defaultDBPath toPath:writableDBPath error:&error];
if (!success) {
NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]);
}
謝謝,我正在關閉我的數據庫後嘗試以下: NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); NSString * documentsDirectory = [paths objectAtIndex:0]; NSString * filePath = [documentsDirectory stringByAppendingPathComponent:@「MoneyMonthly.sqlite」]; if([[NSFileManager defaultManager] fileExistsAtPath:filePath]){[NSFileManager defaultManager] removeItemAtPath:filePath error:nil]; } – Carl
BOOL成功; NSFileManager * fileManager = [NSFileManager defaultManager]; NSError *錯誤; NSString * writableDBPath = [documentsDirectory stringByAppendingPathComponent:@「MoneyMonthly.sqlite」]; NSString * defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@「MoneyMonthly.sqlite」]; success = [fileManager copyItemAtPath:defaultDBPath toPath:writableDBPath error:&error]; (0,@「無法創建包含消息'%@'的可寫數據庫文件」,[error localizedDescription]); } – Carl
而且,它工作嗎?如果沒有,告訴我們錯誤信息是什麼,我們會盡力幫助。此外,如果您將代碼添加到您的**問題**中,並將其格式化爲代碼,那麼它將更具可讀性,並且每個人都會看到它並能夠提供幫助。 – lnafziger