我已经使用macbook上的终端通过sqlite3创建了数据库和表,然后使用我的iPhone应用程序进行部署。它在模拟器插入和工作中很好用。从表中检索值。
但是当我在真正的iPhone上安装它时它不起作用,为什么?我认为它无法获得数据库的路径,那我该怎么做呢?
答案 0 :(得分:1)
您是否将数据库保留在基本应用程序路径中? 因为如果你是,实际的硬件将不允许你写入该目录中的文件,只需阅读。要写入数据库,首先必须将其复制到可访问的目录。
我正在做类似的事情(其中filename是包含数据库文件名称的NSString):
NSArray *docPaths =
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docPath = [docPaths objectAtIndex:0];
NSString *fullName = [docPath stringByAppendingPathComponent:fileName];
NSFileManager *fm = [NSFileManager defaultManager];
if (![fm fileExistsAtPath:fullName])
{
NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *defaultName = [path stringByAppendingPathComponent:fileName];
[fm copyItemAtPath:defaultName toPath:fullName error:NULL];
}
基本上,检查文件是否已存在,如果不存在,则从基本bundlePath复制它。