0

I'm poor at swift yet. (also English! Sorry!)

to check null in decoded json dictionary.

here is working code after search some tips. but I think this code is very bad.

any idea to make this gorgeous code ?

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 Answer 1

1

Gorgeous is subjective but you can make it more concise with the nil-coalescing operator (??):

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)
}

Another thing: those snake_case variable and function names remind me a lot of C/C++. Doesn't look very Swifty to me but it's a personal preference.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.