2010-03-10 21 views
0

當選擇一個可以包含NULL值的列時我得到一個拋出此語句的異常。使用SQLite結果從NULL值列拋出的異常

self.DirectionFromCity = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 8)]; 

我應該如何設置這些屬性,因爲數據庫的NULL值是可以的。

回答

3

按照文檔NSString拋出一個異常,如果字節是空

什麼,你需要做的是檢查返回值,只有建立一個字符串,如果它不是空

char *localityChars = sqlite3_column_text(compiledStatement, 8); 

if (localityChars == nil) { 
    self.DirectionFromCity = nil; 
} else { 
    self.DirectionFromCity = [NSString stringWithUTF8String: localityChars]; 
} 

迴應下面再代碼與額外的檢查越來越多的評論,你可以使用

self.DirectionFromCity = localityChars != nil?[NSString stringWithUTF8String: localityChars]:nil; 

萎縮下來或推出,將做同樣的functi方法onality

self.DirectionFromCity = [self getSQLiteColumn:compiledStatement]; 
+0

感謝, 哎喲......我有35列可包含空值,這將大量開銷添加到應用程序...... – 2010-03-10 09:57:25

+0

的開銷將非常小,唯一真正的區別在於'if'塊 – Liam 2010-03-10 10:07:22

+0

Liam:我認爲他意味着代碼庫的開銷。 – 2010-03-10 11:02:20