2016-05-20 10 views
0

私はまだ素早く貧弱です。 (また、英語!申し訳ありません)swift json nullチェック

デコードされたjson辞書でヌルをチェックします。

ここでは、いくつかのヒントを検索した後の作業コードです。 しかし、私はこのコードは非常に悪いと思います。

この豪華なコードを作成するための任意のアイデアですか?

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

ゴージャスな主観ですが、あなたがnil-合体演算子(??)と、それをより簡潔にすることができます。

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++。私には非常に魅力的ではありませんが、それは個人的な好みです。