我有一個現有的數據庫文件。我想在一個項目中使用這個數據庫文件。我把這個文件放在我的app文件夾中,並將其拖入Xcode中。現在我寫了代碼來檢查文件是否存在。但它是拋出FALSE異常。訪問xcode中的數據庫文件
bool databaseAlreadyExists = [[NSFileManager defaultManager] fileExistsAtPath:@"school.db"];
請讓我知道如何使用現有的數據庫文件。
謝謝
我有一個現有的數據庫文件。我想在一個項目中使用這個數據庫文件。我把這個文件放在我的app文件夾中,並將其拖入Xcode中。現在我寫了代碼來檢查文件是否存在。但它是拋出FALSE異常。訪問xcode中的數據庫文件
bool databaseAlreadyExists = [[NSFileManager defaultManager] fileExistsAtPath:@"school.db"];
請讓我知道如何使用現有的數據庫文件。
謝謝
嘗試獲得與
NSString *databasePath = [[NSBundle mainBundle] pathForResource:@"school" ofType:@"db"];
路徑對於斯威夫特:
let dbPath = Bundle.main.path(forResource: "school", ofType: "db")
我想你在項目中使用核心數據,是不是? 如果是這樣,請看一下Apple的iPhone Core Data Recipes示例項目! 在Classes/RecipesAppDelegate.m中,您將找到完成您所需內容的示例代碼!
在Ray Wenderlich's site有一個關於預加載的好教程。 以Core Data Recipes示例展示的方式發送預加載的數據庫並不是Apple最期望的方式。所以請看看提供的教程,以獲得更復雜的方法!
很確定他沒有使用核心數據,如果它是一個現有的數據庫。 – sosborn
不知道它是什麼類型的數據庫(MySQL,SQLITE等),我可以告訴你最好的是找到一個適當的庫/包裝器來訪問數據庫。舉個例子。 FMBD如果非常適合SQLITE。
這取決於你是否不再需要該數據庫可寫。
您可以只用這樣獲得對數據庫的訪問:
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"];
非常感謝。它爲我工作。 – Coder