2016-04-07 19 views
0

Bozuk iOS 8.0 cihazında bir hapis var ve Telefon uygulamasında bir arama geçmişinin olduğunu görebiliyorum ve cihazdan bir kaç arama yaptım/çağrı geçmiş kayıtları olması gerektiğinden emin olun. Ancak, /private/var/wireless/Library/CallHistory/call_history.db erişmeye çalıştığımda veritabanından alınan satır yok.Neden call_history.db iOS 8.0'de boş?

Bu durumda cihaz arama geçmişini nereden alıyor? AFAIK, CallHistoryDB/CallHistory.storedata'nın yerini CallHistoryDB/CallHistory.storedata konumuna çevirerek iOS 8.3'te gerçekleşti, ancak 8.0 çalıştırıyorum.

Buradaki kod, SQLITE_ROW yerine SQLITE_DONE değerini alıyor. Yanlış veritabanı bakıyoruz böylece

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

Neden veritabanı şeması aynı olduğunu varsayalım? Onu değiştirdiler. Cile'den iFile dosyasını indirin ve dosya sistemine göz atabilir ve SQLite veritabanlarını açabilirsiniz. Bu şekilde araştırma yapmak çok daha kolay. Ya da PC'nize kopyalayın. – creker

cevap

0

CallHistory.storedata (ev domain) call_history.db (kablosuz etki) değişmesidir iOS 8.0yapıldı. CoreData DB olsa bile, SQLite de

CallHistory.storedata'dur.
Açıkçası, tablolar ve alanlar tamamen farklı.

+0

CallHistory.storedata'ya erişmek için yapılması gereken başka bir şey var mı? NSFileManager'a bir çağrı: "/private/var/mobile/Library/CallHistoryDB/CallHistory.storedata" sağlayan fileExistsAtPath false değerini döndürür. Örneğin, yeni konuma/dosyaya erişmek için projeye herhangi bir yetkilendirme eklemem gerekir mi? – Gruntcakes

+0

Hey Sosis, I/var/mobile kontrol ediyorum zaman/Library/CallHistoryDB Eğer çözüm için aldın Ben /var/mobile/Library/CallHistoryDB/CallHistory.storedata Ama gerçek için kontrol ediyorum bile ben yanlış alıyorum arama histroy almak? – Coder

İlgili konular