我有一个现有的数据库文件。我想在项目中使用此db文件。我将此文件放在mac的app文件夹中,并将其拖入Xcode。现在我编写了代码来检查文件是否存在。但它正在抛出FALSE例外。
bool databaseAlreadyExists = [[NSFileManager defaultManager] fileExistsAtPath:@"school.db"];
请告诉我如何使用现有的db文件。
由于
答案 0 :(得分:2)
尝试使用
获取路径NSString *databasePath = [[NSBundle mainBundle] pathForResource:@"school" ofType:@"db"];
对于Swift:
let dbPath = Bundle.main.path(forResource: "school", ofType: "db")
答案 1 :(得分:0)
我想你在项目中使用Core Data,不是吗? 如果是这样,请查看Apple的iPhone Core Data Recipes示例项目! 在Classes / RecipesAppDelegate.m中,您将找到完成所需内容的示例代码!
有一个关于预加载Ray Wenderlich's site的好教程。 以Core Data Recipes示例展示的方式运送预装数据库并不是Apple最需要的方式。因此,请查看提供的教程,以获得更复杂的方法!
答案 2 :(得分:0)
在不知道它是什么类型的数据库(MySQL,SQLITE等)的情况下,我能告诉你的最好的方法是找到一个iOS适当的库/包装器来访问数据库。举个例子。 FMBD如果对SQLITE非常有用。
答案 3 :(得分:0)
这取决于您是否需要数据库可写。
只需执行以下操作即可访问数据库:
NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"mydb.sqlite"];
但如果您已将其复制到另一个目录以便可以写入它(例如Documents目录),则需要执行以下操作以获取路径:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"mydb.sqlite"];