2012-03-25 6 views
0

Ich schreibe hier etwas Code, und ich habe eine Zeit gehabt.Null-Erkennung in XCode mit sqlite

Ich habe einen Wert in meiner Datenbank, die null sein kann als ein Durchschnitt von anderen Daten, wenn diese Daten nicht ausgefüllt wurde gibt es nichts, um den Durchschnitt von zu nehmen.

In meiner Abfrage gibt es manchmal einen Nullwert zurück. Der Wert, der normalerweise dort wäre, ist ein Double. SO i

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

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

Aus irgendeinem Grund haben, ist es auf 0 defualting Wenn ich es NSLog ist es 0, aber Terminal, ich bin in der Lage, sicher zu sein, dass meine Abfrage (über Terminal) für zurückkehrt null dieser Wert.

Jede Hilfe würde sehr geschätzt werden!

Danke Jungs!

Antwort

4

Durch Aufruf von [NSNummer numberWithDouble:] garantieren Sie, dass Sie eine NSNummer zurückbekommen. Wenn Sie nach Null suchen möchten, müssen Sie dies separat tun, vielleicht indem Sie sqlite3_column_type() aufrufen und nach SQLITE_NULL suchen. Etwas wie:

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

... und '@ (sqlite3_column_double (compiledStatement, 7));' wäre wahrscheinlich eine Stilverbesserung. Aber semantisch ist es genau dasselbe. – Tommy