我有一个现有的数据库文件。我想在项目中使用这个 db 文件。我将此文件放在我的应用程序文件夹中,并将其拖到 Xcode 中。现在我已经编写了代码来检查文件是否存在。但它抛出 FALSE 异常。
bool databaseAlreadyExists = [[NSFileManager defaultManager] fileExistsAtPath:@"school.db"];
请让我知道如何使用现有的数据库文件。
谢谢
尝试获取路径
NSString *databasePath = [[NSBundle mainBundle] pathForResource:@"school" ofType:@"db"];
对于斯威夫特:
let dbPath = Bundle.main.path(forResource: "school", ofType: "db")
我想你在你的项目中使用 Core Data,不是吗?如果是这样,请查看 Apple 的iPhone Core Data Recipes示例项目!在 Classes/RecipesAppDelegate.m 中,您将找到完成您需要的示例代码!
Ray Wenderlich 的网站上有一个很好的关于预加载的教程。以 Core Data Recipes 示例展示的方式交付预加载的数据库并不是 Apple 最想要的方式。因此,请查看提供的教程以获得更复杂的方法!
在不知道它是什么类型的数据库(MySQL、SQLITE 等)的情况下,我可以告诉你的最好的方法是找到一个适合 iOS 的库/包装器来访问数据库。举个例子。FMBD如果对 SQLITE 非常好。
这取决于您是否需要数据库可写。
您只需执行以下操作即可访问数据库:
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"];