一尘不染

在NSDictionary中检测Null值

swift

我有一个NSDictionary从API服务器的JSON响应中填充的。有时,该字典中某个键的值是Null

我正在尝试采用给定的值并将其放入表格单元格的详细文本中进行显示。

问题是,当我尝试将值强制转换为NSStringa时,我崩溃了,我 认为这 是因为我试图将其强制Null转换为字符串。

什么是正确的方法?

我想做的是这样的:

cell.detailTextLabel.text = sensor.objectForKey( "latestValue" ) as NSString

这是字典的示例:

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";
}

如果我只需要将所有这些都包装成一个条件,那很好。我只是无法弄清楚那个条件是什么。回到Objective-C世界,我将与之作比较,[NSNull null]但是在Swift中似乎不起作用。


阅读 241

收藏
2020-07-07

共1个答案

一尘不染

您可以使用as?运算符,该运算符将返回一个可选值(nil如果向下转换失败)

if let latestValue = sensor["latestValue"] as? String {
    cell.detailTextLabel.text = latestValue
}

我在一个快速的应用程序中测试了这个示例

let x: AnyObject = NSNull()
if let y = x as? String {
    println("I should never be printed: \(y)")
} else {
    println("Yay")
}

并且可以正确打印"Yay",而

let x: AnyObject = "hello!"
if let y = x as? String {
    println(y)
} else {
    println("I should never be printed")
}

"hello!"按预期打印。

2020-07-07