在swift中通过JSON获得可空的bool值。转换AnyObject?对Bool

时间:2016-07-13 21:06:11

标签: json swift web-services

我有一个从SQL Server 2014获取数据的Web服务。 数据库表中有一个可以为空的性别列。

返回数据是JSON。

我的问题出在我的iOS应用程序中,我必须知道它何时为空 我试过了:

ChangeListener

但是在以下代码中执行了let gender: Bool? = json["gender"] as! Bool?

gender == false

性别!= nil总是如此(我不能使用它)

JSON返回值是以下之一:

  • {“gender”:true}
  • {“性别”:false}
  • {“gender”:null}

如果SQL Server数据库中的性别为空,我希望忽略整个if语句。

P.S。:数据库和网络服务不是我的,我不能更改返回数据类型/值,也不能更改性别列数据类型。

P.P.S。:json [“gender”]数据类型是AnyObject?。这是显而易见的,但没有什么可担的。

感谢任何帮助

2 个答案:

答案 0 :(得分:0)

仅当 json [“gender”] 返回除nil之外的任何内容时,才会运行以下代码。在你的情况下它的真或假。

if let gender = json["gender"] as! Bool{
   if gender == true {
     self.genderSelection.selectedSegmentIndex = 0
   } else if gender == false {
     self.genderSelection.selectedSegmentIndex = 1
   }
}

答案 1 :(得分:0)

经过一些研究后我发现,JSON对任何不等于“true”的值都假。 为了能够有3个选项(在这种情况下),web-service必须返回其他bool,如字符串或整数。