2012-03-25 18 views
0

我在這裏寫一些代碼,我有一個有時間。空探測XCode中使用SQLite

我有我的數據庫中的值可以爲空爲其它數據的平均值,如果該數據尚未填充沒有什麼拿的平均值。

在我的查詢將有返回,有時一個空值。那裏的價值通常是雙倍的。所以我有

NSNumber *num = [NSNumber numberWithDouble:sqlite3_column_double(compiledStatement,7)]; 

if (num == nil) { 
    do something 
} 
else { 
    do something else 
} 

出於某種原因,它defualting爲0。當我的NSLog它,它是0,但在使用終端,我能肯定的是我的查詢(通過終端)可以返回null那個價值。

任何幫助將不勝感激!

謝謝你們!

回答

4

通過調用[NSNumber的numberWithDouble:]你保證,你得到一個NSNumber回來。如果你想檢查null,你必須單獨做,也許調用sqlite3_column_type()並檢查SQLITE_NULL。例如:

if (sqlite3_column_type(compiledStatement, 7) != SQLITE_NULL) 
{ 
    NSNumber *num = [NSNumber numberWithDouble:sqlite3_column_double(compiledStatement,7)]; 
} 
+0

...和'@(sqlite3_column_double(compiledStatement,7));'可能是一種風格的改進。但從語義上講,這完全是一回事。 – Tommy 2015-02-16 05:29:33