博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS中关于读取已存在的数据库问题:路径为空的解决方法
阅读量:6431 次
发布时间:2019-06-23

本文共 1449 字,大约阅读时间需要 4 分钟。

hot3.png

        今天在做一个数据库时遇到一个很奇葩的问题,导入一个db数据库,我的思路是这样的,因为如果要对数据库进行操作,需要先把这个数据库拷贝一份到沙盒中,但是当我用这个方法

NSString *backupDbPath = [[NSBundle mainBundle] pathForResource:@"ICD10" ofType:@"db"];

时,却遇到很奇葩的问题,一直提示backupDbPath为nil,找了一上午快被折磨疯了,终于找到症结所在,原来是苹果捣的鬼,在拖入db文件到工程时,苹果默认把add Target前面的勾给去掉了!!!导致无论如何也找不到我们导入的db文件,so,解决方法就是:

         把db文件从工程中删除,然后重新拖进去,当弹出窗口时,别着急着看都没看就点next,把add Target前面的勾勾上,然后就会发现,真的好了!

        问题很简单,却困扰了我很久,特记录在此,需要勾上的不止copy item,还有add Target,警告自己时刻细心细心再细心,也希望能帮到遇到同样问题的朋友。

        图片好像没有显示出来,大家凑合着看吧。奉上我的一部分代码:

NSArray *searchPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);        NSString *doc = [searchPaths objectAtIndex:0];        NSString *dbFilePath = [doc stringByAppendingPathComponent:@"ICD10.db"];        NSFileManager *fm = [NSFileManager defaultManager];        BOOL isExist = [fm fileExistsAtPath:dbFilePath];        if (!isExist) {            //拷贝数据库            //NSString *backupDbPath =[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"ICD10.db"];            NSString *backupDbPath = [[NSBundle mainBundle] pathForResource:@"ICD10" ofType:@"db"];            NSError *error = [[NSError alloc] init];            BOOL cp = [fm copyItemAtPath:backupDbPath toPath:dbFilePath error:&error];            if (cp) {                NSLog(@"数据库拷贝成功");            }else{                NSLog(@"数据库拷贝失败: %@",[error localizedDescription]);            }        }

转载于:https://my.oschina.net/u/2461772/blog/540231

你可能感兴趣的文章
IT 敏捷性:更好的利用能耗监测数据
查看>>
苹果申请图像传感器专利,或解决摄像头突起问题
查看>>
梳理非功能测试
查看>>
物联网:互联网的终结者?
查看>>
打造“海绵城市” 实现智慧治水
查看>>
Oracle学习笔记:启停数据库实例、初始化参数
查看>>
互联网时代引爆数据存储设备的需求
查看>>
FCC主席解释最新提案:要求ISP转售用户数据前征求用户同意
查看>>
测试用例编写规范小结
查看>>
除了安全,移动IT同样需要整合
查看>>
风起云动 四点让云计算引发全球变革
查看>>
Java流缓冲区问题
查看>>
搭载V3降幅较大 3月四路机架产品详导
查看>>
在iOS8上使用TestFlight进行Beta测试
查看>>
IT业务连续性规划:托管方式与云端有何不同?
查看>>
2017安防民用市场现状及特点浅析
查看>>
丹麦计划取消全部可再生能源补贴
查看>>
闽20个省直部门数据中心完成整合 迁移52个应用系统
查看>>
Java类加载器以及类加载器的委托模型
查看>>
Oracle为其新款Exadata SL6配备Linux
查看>>