2013-01-19 24 views
0

我使用名爲db.sqlite的數據庫爲我的iPhone應用程序。 爲了找到我使用下面的代碼的正確路徑:應用程序選擇錯誤的數據庫路徑

- (NSString *) filePath { 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
return [[paths objectAtIndex:0] stringByAppendingPathComponent:@"db.sqlite"]; 

}

這將返回以下路徑:

/Users/*******/Library/Application Support/iPhone Simulator/6.0/Applications/E1D5F78D-7FD2-45D7-A3DE-B53BCBB9BDC5/Documents/db.sqlite 

但在這個路徑中的數據庫是新創建並空。 將正確的路徑作爲字符串返回時效果很好,但我認爲這不適用於iPhone。

return @"/Users/*******/workspace/xcode/MyApp/MyApp/db.sqlite"; 

我做錯了什麼或忘記了嗎?

回答

1

您發佈的代碼用於從應用程序的Documents沙箱目錄中獲取文件。根據你想要的路徑,你需要從應用程序的資源包中獲取文件。

NSString *path = [[NSBundle mainBundle] pathForResource:@"db" ofType:@"sqlite"]; 

請記住,您的db.sqlite文件在應用程序包內是隻讀的。不要試圖寫入這個數據庫文件。

如果需要寫入數據庫,則必須先將文件複製到可寫位置(如Documents目錄)。然後使用該文件的副本進行所有閱讀和寫作。

+0

我可以(必須)通過代碼複製文件或手動完成文件嗎?之後我如何才能將正確的文件上傳到iPhone上? – daydr3amer

+1

它必須通過代碼完成。通常你檢查文件目錄中是否存在文件。如果沒有,則從該包中複製該模板。然後你使用Documents中的文件。 – rmaddy