今天在作一個數據庫時遇到一個很奇葩的問題,導入一個db數據庫,個人思路是這樣的,由於若是要對數據庫進行操做,須要先把這個數據庫拷貝一份到沙盒中,可是當我用這個方法數據庫
NSString *backupDbPath = [[NSBundle mainBundle] pathForResource:@"ICD10" ofType:@"db"];
時,卻遇到很奇葩的問題,一直提示backupDbPath爲nil,找了一上午快被折磨瘋了,終於找到癥結所在,原來是蘋果搗的鬼,在拖入db文件到工程時,蘋果默認把add Target前面的勾給去掉了!!!致使不管如何也找不到咱們導入的db文件,so,解決方法就是:code
把db文件從工程中刪除,而後從新拖進去,當彈出窗口時,彆着急着看都沒看就點next,把add Target前面的勾勾上,而後就會發現,真的好了!圖片
問題很簡單,卻困擾了我好久,特記錄在此,須要勾上的不止copy item,還有add Target,警告本身時刻細心細心再細心,也但願能幫到遇到一樣問題的朋友。ip
圖片好像沒有顯示出來,你們湊合着看吧。奉上個人一部分代碼:get
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]); } }