2010-03-17 45 views
0

當應用程序啓動時,將其複製到您的文檔目錄。 假設您的sqlite數據庫在您的項目中,您可以使用下面的代碼將數據庫複製到您的文檔目錄。我們還假設你的數據庫被稱爲mydb.sqlite。如何創建包含在iPhone Xcode項目中的sqlite數據庫的可寫副本?

//copy the database to documents 
NSFileManager *fileManager = [NSFileManager defaultManager]; 
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"mydb.sqlite"]; 
if(![fileManager fileExistsAtPath:path]) 
{ 
    NSData *data = [NSData dataWithContentsOfFile:[[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/mydb.sqlite"]]; 
    [data writeToFile:path atomically:YES]; 
} 

任何人都知道的一種更好的方式來做到這一點。這似乎工作...

回答

1

這看起來對我有效。用戶也可以直接將該文件與此NSFileManager方法,而不是複製:

- (BOOL)copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error; 

我想用這個方法,而不是可能會有點更具可讀性,但情況因人而異。

+0

這樣好多了,因爲它不會將整個數據庫先複製到內存中! – 2010-03-18 02:40:28

+0

你說得對。我認爲它可能很小,因爲我所有的SQLite數據庫都很小。但在這種情況下,它並沒有傷害到我。 :) – 2010-03-18 03:02:37