0

我有一个现有的数据库文件。我想在项目中使用这个 db 文件。我将此文件放在我的应用程序文件夹中,并将其拖到 Xcode 中。现在我已经编写了代码来检查文件是否存在。但它抛出 FALSE 异常。

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

请让我知道如何使用现有的数据库文件。

谢谢

4

4 回答 4

2

尝试获取路径

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

对于斯威夫特:

let dbPath = Bundle.main.path(forResource: "school", ofType: "db")
于 2012-10-01T12:00:16.717 回答
0

我想你在你的项目中使用 Core Data,不是吗?如果是这样,请查看 Apple 的iPhone Core Data Recipes示例项目!在 Classes/​RecipesAppDelegate.m 中,您将找到完成您需要的示例代码!

Ray Wenderlich 的网站上有一个很好的关于预加载的教程。以 Core Data Recipes 示例展示的方式交付预加载的数据库并不是 Apple 最想要的方式。因此,请查看提供的教程以获得更复杂的方法!

于 2012-10-01T11:52:52.700 回答
0

在不知道它是什么类型的数据库(MySQL、SQLITE 等)的情况下,我可以告诉你的最好的方法是找到一个适合 iOS 的库/包装器来访问数据库。举个例子。FMBD如果对 SQLITE 非常好。

于 2012-10-01T11:57:47.743 回答
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"];
于 2012-10-01T12:08:59.417 回答