我的iOS 8.0设备已经破了,在手机应用程序中,我可以看到有一个通话记录,我刚从设备拨打了几个电话,确保应该有通话记录条目。
但是,当我尝试访问/private/var/wireless/Library/CallHistory/call_history.db
时,没有从数据库中检索到的行。
那么设备从哪里获取呼叫历史记录? AFAIK从CallHistory / call_history.db变为CallHistoryDB / CallHistory.storedata的位置发生在iOS 8.3中,但我正在运行8.0。
这是代码,它获取SQLITE_DONE而不是SQLITE_ROW。
NSString *callHisoryDatabasePath = @"/private/var/wireless/Library/CallHistory/call_history.db";
BOOL callHistoryFileExist = FALSE;
callHistoryFileExist = [fileManager fileExistsAtPath:callHisoryDatabasePath];
NSMutableArray *callHistory = [[NSMutableArray alloc] init];
if(callHistoryFileExist) {
if ([fileManager isReadableFileAtPath:callHisoryDatabasePath]) {
sqlite3 *database;
if(sqlite3_open([callHisoryDatabasePath UTF8String], &database) == SQLITE_OK) {
sqlite3_stmt *compiledStatement;
NSString *sqlStatement = [NSString stringWithString:@"SELECT * FROM call;"];
int errorCode = sqlite3_prepare_v2(database, [sqlStatement UTF8String], -1,
&compiledStatement, NULL);
if( errorCode == SQLITE_OK) {
int count = 1;
int result = sqlite3_step(compiledStatement);
while(result == SQLITE_ROW) {**** here result is SQLITE_DONE*****
...
答案 0 :(得分:0)
从call_history.db
(无线域)到CallHistory.storedata
(主域)的更改是在 iOS 8.0 上进行的,因此您正在查看错误的数据库。
CallHistory.storedata
也是SQLite,即使它是CoreData DB
显然,表格和字段完全不同。