2009-11-09 93 views
1

我正在從事一個iPhone/Ipod觸摸項目,涉及從sqlite數據庫中保存和提取數據。它工作正常,但在發展某些方面我得到這個錯誤(應用程序啓動時):Sqlite - 「難以理解的歸檔」問題

應用萌發過程中由於未捕獲的異常「NSInvalidArgumentException」,原因:「*** - [NSKeyedUnarchiver initForReadingWithData:]:不知所云存檔(0x4e,0x49,0x42,0x41,0x72,0x63,0x68,0x69)' 2009-11-09 10:08:28.810 FagNavigasjon [1627:20b]

以前我只能解決這個問題通過恢復到發展和持續的更早點。這次我發現如果我註釋掉代碼的某個部分,應用程序不會崩潰。

while(sqlite3_step(selectstmt3)==SQLITE_ROW){ 
/* 
      NSString *navn=[[NSString alloc] initWithUTF8String: (char *)sqlite3_column_text(selectstmt3, 0)]; 
     NSString *telefon=[[NSString alloc] initWithUTF8String:(char *)sqlite3_column_text(selectstmt3, 1)]; 
     NSString *fodselsar=[[NSString alloc] initWithUTF8String:(char *)sqlite3_column_text(selectstmt3, 2)]; 
     NSString *ariframtiden=[[NSString alloc] initWithUTF8String:(char *)sqlite3_column_text(selectstmt3, 3)]; 
     NSString *verneplikt=[[NSString alloc] initWithUTF8String:(char *)sqlite3_column_text(selectstmt3, 4)]; 
     NSString *utdannelse=[[NSString alloc] initWithUTF8String:(char *)sqlite3_column_text(selectstmt3, 5)]; 
     NSString *epost=[[NSString alloc] initWithUTF8String:(char *)sqlite3_column_text(selectstmt3, 6)]; 

     appDelegate.navn=navn; 
     appDelegate.epost=epost; 
     appDelegate.telefon=telefon; 
     appDelegate.fodselsar=fodselsar; 
     appDelegate.studiear=ariframtiden; 
     appDelegate.utdannelse=utdannelse; 
     appDelegate.verneplikt=verneplikt; 
     */ 
    } 

但當然,該應用程序不會加載數據了。此代碼以前的工作,並且我沒有改變它之前這個錯誤。但是,我已經向數據庫添加了新記錄,但是當我在SQLite管理器中查看它們時,這些看起來沒有問題。誰能告訴我什麼會導致這個問題?我很感激任何迴應!

回答

0

只是爲了記錄:我已經解決了這個問題,但我還是不太明白。我知道哪張桌子引起了這個問題。我在那裏使用SQLlite管理器,並更改了一些varchar字段的值,問題就消失了......儘管如此,舊值看起來還不錯。希望我能解釋爲什麼這解決了它...

1

您是否嘗試過逐條取消註釋每一行以查看哪一行導致問題?如果您知道哪一行導致它嘗試查看數據庫中的數據是否正確,並且如果您正在使用版本控制,則嘗試在添加新記錄之前將數據庫恢復爲原始數據庫。

p.s. 你看過Core Data?它可以讓你的生活變得更容易。

+0

感謝您的回答!我嘗試了一點一點地取消註釋,並且它是由第一行導致的allready: NSString * navn = [[NSString alloc] initWithUTF8String:(char *)sqlite3_column_text(selectstmt3,0)]; 據我所知,該行在數據庫中找到,但一旦我開始讀取它,我得到錯誤... 我還沒有檢查出核心數據,但我會。感謝您的建議! – Ezop 2009-11-09 13:48:43