2012-10-01 67 views
0

我有一个现有的数据库文件。我想在一个项目中使用这个数据库文件。我把这个文件放在我的app文件夹中,并将其拖入Xcode中。现在我写了代码来检查文件是否存在。但它是抛出FALSE异常。访问xcode中的数据库文件

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

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

谢谢

回答

2

尝试获得与

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

路径对于斯威夫特:

let dbPath = Bundle.main.path(forResource: "school", ofType: "db") 
+0

非常感谢。它为我工作。 – Coder

0

我想你在项目中使用核心数据,是不是? 如果是这样,请看一下Apple的iPhone Core Data Recipes示例项目! 在Classes/RecipesAppDelegate.m中,您将找到完成您所需内容的示例代码!

Ray Wenderlich's site有一个关于预加载的好教程。 以Core Data Recipes示例展示的方式发送预加载的数据库并不是Apple最期望的方式。所以请看看提供的教程,以获得更复杂的方法!

+2

很确定他没有使用核心数据,如果它是一个现有的数据库。 – sosborn

0

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

0

这取决于你是否不再需要该数据库可写。

您可以只用这样获得对数据库的访问:

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