以前運行程序正常,今日整理資料,竟然發現運行不出來,從數據讀取內容,而後使用表格時候顯示.結果程序運行後,模擬器一片空白,囧.ios
使用終端命令能夠正常讀取出數據庫內容:git
objectiveczx:1227_database_readdata-and-showtable zx$ sqlite3 data.sqlite SQLite version 3.8.5 2014-08-15 22:37:57 Enter ".help" for usage hints. sqlite> .header on sqlite> .mode column sqlite> .table firstlevel leaflevel secondlevel studytable testtable sqlite> select * from firstlevel; serial pid pname pcount ---------- ---------- -------------------------------------------------- ---------- 1 1 道路交通安全法律、法規和規章(185題) 16 2 2 交通訊號及其含義(158題) 8 3 3 安全行車、文明駕駛知識(159題) 8 4 4 高速公路、山區道路、橋樑、隧道、? 10 5 5 出現爆胎、轉向失控、制動失靈等緊? 23 6 6 機動車整體構造和主要安全裝置常識? 6 7 7 發生交通事故後的自救、急救等基本? 4
能夠正常打開數據庫:github
objectivec-(id)init{ if (self = [super init]) { NSString *databasePath = [[NSBundle mainBundle]pathForResource:@"data" ofType:@"sqlite"]; _database = [[FMDatabase alloc]initWithPath:databasePath]; if (_database.open == NO) { NSLog(@"%s [LINE:%d] open database from %@ failed.", __func__, __LINE__,databasePath); } else { NSLog(@"%s [LINE:%d] open database successed", __func__, __LINE__); } } return self; }
輸出:sql
objectivec2015-01-02 21:22:18.996 1227_database_readdata-and-showtable[28988:1117979] -[ZXDatabase init] [LINE:52] open database successed 2015-01-02 21:22:18.997 1227_database_readdata-and-showtable[28988:1117979] -[ZXDatabase firstLevelTable_Marray] [LINE:69] resultSet=(null) 2015-01-02 21:22:18.997 1227_database_readdata-and-showtable[28988:1117979] -[ZXDatabase firstLevelTable_Marray] [LINE:75] _firstLevelTable_Marray=( )
初步斷定.1)數據庫打開成功.2)沒有從數據庫中讀取出內容來.數據庫
objectivecNSString *selectAllFromFirstLevelTable_sqlString = @"SELECT * FROM firstlevel";
修改後仍然沒有查找到錯誤出處.安全
objectivec-(NSMutableArray *)firstLevelTable_Marray{ if(_firstLevelTable_Marray == nil){ _firstLevelTable_Marray = [[NSMutableArray alloc]init]; NSString *selectAllFromFirstLevelTable_sqlString = @"SELECT * FROM firstlevel"; NSLog(@"%s [LINE:%d] _database=%@", __func__, __LINE__,_database); FMResultSet *resultSet = [_database executeQuery:selectAllFromFirstLevelTable_sqlString]; NSLog(@"%s [LINE:%d] resultSet=%@", __func__, __LINE__,resultSet); while (resultSet.next) { ZXFirstLevelDataModel *firstLevelDataModel = [ZXFirstLevelDataModel modelWithOneRow:resultSet]; NSLog(@"%s [LINE:%d] firstLevelDataModel = %@", __func__, __LINE__,firstLevelDataModel); [_firstLevelTable_Marray addObject:firstLevelDataModel]; } NSLog(@"%s [LINE:%d] _firstLevelTable_Marray=%@", __func__, __LINE__,_firstLevelTable_Marray); } return _firstLevelTable_Marray; }
objectivecNSString *databasePath = [[NSBundle mainBundle]pathForResource:@"data" ofType:@"sqlite"]; NSLog(@"%s [LINE:%d] databasePath=%@", __func__, __LINE__,databasePath);
輸出spa
objectivec2015-01-02 21:38:52.899 1227_database_readdata-and-showtable[29249:1128299] -[ZXDatabase init] [LINE:46] databasePath=(null) 2015-01-02 21:38:52.900 1227_database_readdata-and-showtable[29249:1128299] -[ZXDatabase init] [LINE:53] open database successed 2015-01-02 21:38:52.901 1227_database_readdata-and-showtable[29249:1128299] -[ZXDatabase firstLevelTable_Marray] [LINE:69] _database=<FMDatabase: 0x7a82eee0>
數據庫對象地址不爲空,可是數據庫對象的路徑字符串爲空?沒有找到文件?難道在工程中沒有這麼文件?code
那麼,刪除這個文件,而後從新導入,sqlite
發現問題了:對象
文件沒有添加target!!!!!
問題的緣由:
因爲以前導入的時候,沒有使用拷貝.今天整理文檔,以前的工程文件路徑發生了改變,然而此工程的數據庫沒有拷貝,出現了找不到文件錯誤.
從新導入了下了文件,確認勾選了拷貝的選項.
今天的錯誤出如今沒有將文件添加到target中.
在向工程添加已有文件的時候.
aa)處,若是不勾選,文件就不會拷貝到本工程中.(當原始文件路徑變化的時候,就會找不到文件)
bb)處,也就是今天的錯誤之處,若是不勾選,就不會添加到目標工程文件中.