2011-11-25 61 views
1
NSString *aName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)]; 
NSString *aDescription = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 2)]; 
NSString *aImageUrl = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 3)]; 
NSString *aCount = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 4)]; 
Animal *animal = [[Animal alloc] initWithName:aName description:aDescription url:aImageUrl countc:aCount ]; 

程序接收到的信號「SIGABRT」在設置了「* aCount」的行,我該如何調試(解決)這種類型的錯誤?調試程序接收信號「SIGABRT」

+0

countc:aCount or count:aCount?如果count參數是整數類型tyen,請使用[aCount intValue]。 – Ravin

回答

1

似乎數據庫列有null值。你需要的時候,你正在處理的SQLite使用前先檢查空。

做這樣的事情 -

if ((char *)sqlite3_column_text(compiledStatement, 4)) 
{ 
    NSString *aCount = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 4)]; 

} 
0

打印的NSString的同時檢查initwithname功能

1

有該異常的一些可能性,具有下列檢查...

  1. 列可能代表數據庫中的代碼是不是整視爲VARCHAR。
  2. 該列可能具有空值,並試圖轉換爲NSString。
+0

列是VARCHAR,它不爲NULL – susitha