swift json null check

时间:2016-05-20 00:52:59

标签: json swift

我很快就很乖。 (还有英文!对不起!)

在解码的json字典中检查null。

这里是搜索一些提示后的工作代码。 但我认为这段代码非常糟糕。

任何想法制作这个华丽的代码?

var v_desc = ""
var v_sword = ""
var v_sortk = 0
for (_, value) in api_result {
    if let ch_descr = value["description"] as? String {
        v_desc = ch_descr
    } else {
        v_desc = ""
    }
    if let ch_sword = value["search_word"] as? String {
        v_sword = ch_sword
    } else {
        v_sword = ""
    }
    if let ch_sortk = value["sort_key"] as? Int {
        v_sortk = ch_sortk
    } else {
        v_sortk = 0
    }

    self.cell_data.append(aps_tag(catg_UID: value["ctag_UID"] as! Int, set_code: value["set_code"] as! Int, title: value["title"] as! String, description: v_desc, search_word: v_sword, nums: value["nums"] as! Int, sort_key: v_sortk))

}

1 个答案:

答案 0 :(得分:1)

华丽是主观的,但你可以使用nil-coalescing运算符(??)使其更简洁:

for (_, value) in api_result {
    let catg_UID = value["ctag_UID"] as! Int
    let set_code = value["set_code"] as! Int
    let title    = value["title"] as! String
    let nums     = value["nums"] as! Int

    let v_desc   = value["description"] as? String ?? ""
    let v_sword  = value["search_word"] as? String ?? ""
    let v_sortk  = value["sort_key"] as? Int ?? 0

    let aps_tag  = aps_tag(catg_UID: catg_UID, set_code: set_code, title: title, description: v_desc, search_word: v_sword, nums: nums, sort_key: v_sortk)
    self.cell_data.append(aps_tag)
}

另一件事:那些snake_case变量和函数名称让我想起了很多C / C ++。对我来说看起来不太友好,但这是个人偏好。