我从URL获取数据,它将在Json中返回。我想要做的是在特定的Json列不包含null或Nil时为某个按钮着色。这是我的Json
{"票":" 0"" vote_status":空},{"票":&#34 1"" vote_status":" 11"}
正如您所见,字段vote_status以字符串形式返回,但如果该值为null,则它周围没有任何引号。如何在代码中检查Null值
// This will store all the vote_status values
var VoteStatus = [String]()
// captures the value
if var vote_Status = Stream["vote_status"] as? String {
self.VoteStatus.append(vote_Status)
}
但是我收到错误致命错误:索引超出范围
我很肯定这是因为NuLL值没有任何字符串。有没有办法可以检查NULL值并将其更改为" null" ?我试过这样做
if var voteStatus = Stream["vote_status"] as? String {
if vote_Status == nil {
vote_Status = "null"
}
self.VoteStatus.append(vote_Status)
}
并且它声明将String类型的非可选值与nil进行比较始终为false。上面的代码编译但在运行时给出错误。我是Swift的新手,但任何建议都会很棒..
答案 0 :(得分:1)
您获得该编译时错误的原因是,如果这传递:if var voteStatus = Stream["vote_status"] as? String {
那么这就是Stream["vote_status"]
是非零字符串值的保证。如果你想做一些不同的事情,如果这是一个零,那么只需要一个else
语句:
if var voteStatus = Stream["vote_status"] as? String {
//Do whatever you want with a guaranteed, non-nil String
} else {
//It's nil
}
如果您还想将字符串"null"
视为零值,可以添加一点:
if var voteStatus = Stream["vote_status"] as? String, voteStatus != "null" {
//Do whatever you want with a guaranteed, non-nil, non-"null" String
} else {
//It's nil or "null"
}
index out of range
错误可能是由我们在您的代码中看不到的。 Stream
本身是可选的吗?在您的第二个示例中,您是否忘记初始化voteStatus
数组?