Detect a Null value in NSDictionary
ios, nsnull, swift
Solution
You can use the `as?` operator, which returns an optional value (`nil` if the downcast fails)
if let latestValue = sensor["latestValue"] as? String {
cell.detailTextLabel.text = latestValue
}
I tested this example in a swift application
let x: AnyObject = NSNull()
if let y = x as? String {
println("I should never be printed: \(y)")
} else {
println("Yay")
}
and it correctly prints `"Yay"`, whereas
let x: AnyObject = "hello!"
if let y = x as? String {
println(y)
} else {
println("I should never be printed")
}
prints `"hello!"` as expected.
Problem
I have an `NSDictionary` that's populated from a JSON response from an API server. Sometimes the values for a key in this dictionary are `Null` I am trying to take the given value and drop it into the detail text of a table cell for display. The problem is that when I try to coerce the value into an `NSString` I get a crash, which I think is because I'm trying to coerce `Null` into a string. What's the right way to do this? What I want to do is something like this: ``` cell.detailTextLabel.text = sensor.objectForKey( "latestValue" ) as NSString ``` Here's an example of the Dictionary: ``` Printing description of sensor: { "created_at" = "2012-10-10T22:19:50.501-07:00"; desc = "<null>"; id = 2; "latest_value" = "<null>"; name = "AC Vent Temp"; "sensor_type" = temp; slug = "ac-vent-temp"; "updated_at" = "2013-11-17T15:34:27.495-07:00"; } ``` If I just need to wrap all of this in a conditional, that's fine. I just haven't been able to figure out what that conditional is. Back in the Objective-C world I would compare against `[NSNull null]` but that doesn't seem to be working in Swift.