IOS Swift错误读取Json字符串值

时间:2017-03-10 00:49:33

标签: json swift swift3

我从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的新手,但任何建议都会很棒..

1 个答案:

答案 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数组?