2012-10-01 96 views
0

我有一個現有的數據庫文件。我想在一個項目中使用這個數據庫文件。我把這個文件放在我的app文件夾中,並將其拖入Xcode中。現在我寫了代碼來檢查文件是否存在。但它是拋出FALSE異常。訪問xcode中的數據庫文件

bool databaseAlreadyExists = [[NSFileManager defaultManager] fileExistsAtPath:@"school.db"]; 

請讓我知道如何使用現有的數據庫文件。

謝謝

回答

2

嘗試獲得與

NSString *databasePath = [[NSBundle mainBundle] pathForResource:@"school" ofType:@"db"]; 

路徑對於斯威夫特:

let dbPath = Bundle.main.path(forResource: "school", ofType: "db") 
+0

非常感謝。它爲我工作。 – Coder

0

我想你在項目中使用核心數據,是不是? 如果是這樣,請看一下Apple的iPhone Core Data Recipes示例項目! 在Classes/RecipesAppDelegate.m中,您將找到完成您所需內容的示例代碼!

Ray Wenderlich's site有一個關於預加載的好教程。 以Core Data Recipes示例展示的方式發送預加載的數據庫並不是Apple最期望的方式。所以請看看提供的教程,以獲得更復雜的方法!

+2

很確定他沒有使用核心數據,如果它是一個現有的數據庫。 – sosborn

0

不知道它是什麼類型的數據庫(MySQL,SQLITE等),我可以告訴你最好的是找到一個適當的庫/包裝器來訪問數據庫。舉個例子。 FMBD如果非常適合SQLITE。

0

這取決於你是否不再需要該數據庫可寫。

您可以只用這樣獲得對數據庫的訪問:

NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"mydb.sqlite"]; 

,但如果你已經將它複製到另一個目錄,所以你可以寫入(例如文檔目錄),你需要做這樣的事情,以獲得路徑:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"mydb.sqlite"];