在xcode中访问数据库文件

时间:2012-10-01 11:45:39

标签: iphone sql ios xcode

我有一个现有的数据库文件。我想在项目中使用此db文件。我将此文件放在mac的app文件夹中,并将其拖入Xcode。现在我编写了代码来检查文件是否存在。但它正在抛出FALSE例外。

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

请告诉我如何使用现有的db文件。

由于

4 个答案:

答案 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"];