如何将 Sqlite 数据库文件复制/放入设备以在其上测试应用程序 - Xcode
Posted
技术标签:
【中文标题】如何将 Sqlite 数据库文件复制/放入设备以在其上测试应用程序 - Xcode【英文标题】:how to copy/put Sqlite Database file to Device to test app on it - Xcode 【发布时间】:2014-06-10 23:19:38 【问题描述】:我到处搜索,但找不到这个问题的答案。我制作了一个使用以前构建的 Sqlite 数据库的应用程序。在模拟器上我的数据库文件位于 /Users/idsMac/Library/Application Support/iPhone Simulator/7.1/Applications/AAAAAAAA-CCCCC-DDDD-7777-PPPPPPPPP/Documents/
我正在使用下面的代码来读取这个 Sqlite 数据库文件。
-(NSString *)dataFilePath
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths lastObject];
return [documentsDirectory stringByAppendingPathComponent:@"punDictionary.sqlite"];
if((sqlite3_open([[self dataFilePath] UTF8String], &_database)) != SQLITE_OK)
NSLog(@"Failed to open Database");
else
NSLog(@"Database Connceted ..... ");
我的应用程序在模拟器上运行良好。但是当我在我的 ios 设备上测试它时。它没有检测到数据库。 我的问题是如何将 sqlite 数据库文件添加到我的应用程序以在设备上进行测试?
提前致谢!
【问题讨论】:
【参考方案1】:将 Sqlite DB 文件包含到您的项目中,如果应用访问 DB 文件时不存在,则将其复制到 Documents 文件夹中。
#define DB_NAME @"XXX.sqlite"
#define DB_FULLPATH [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:DB_NAME]
+ (void)createDatabase
NSFileManager *fileManager = [NSFileManager defaultManager];
if(![fileManager fileExistsAtPath:DB_FULLPATH])
NSString *bundlePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:DB_NAME];
[fileManager copyItemAtPath:bundlePath toPath:DB_FULLPATH error:nil];
【讨论】:
哪个文档文件夹?以上是关于如何将 Sqlite 数据库文件复制/放入设备以在其上测试应用程序 - Xcode的主要内容,如果未能解决你的问题,请参考以下文章
如何将预先存在的 sqlite 文件放入 <Application_Home>/Library/?
xcode sqlite3 如何将数据库从捆绑包复制到文档文件夹?
在 bash 脚本中,如何引用单独的文件以在 for 循环中使用它? [复制]