我有一个现有的数据库文件。我想在一个项目中使用这个数据库文件。我把这个文件放在我的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