0

我对swift很陌生,首先我想知道编码和解码之间的主要区别是什么。其次,我尝试从响应中获取特定值,如下所示:

在此处输入图像描述

我想解码gender_category的值并将其放入piker,这是我到目前为止所做的:

struct Gender: Decodable {

let result : [Result]

enum CodingKeys :String, CodingKey {
    case result
}

struct Result: Decodable {
    let genderCategory: String


    enum CodingKeys : String, CodingKey {

        case genderCategory = "gender_category"
    }
}
}

我得到响应的代码是这样的:

 func getGenderValueFromJSON()  {
    let url = URL(string: "http://www.----------.com/GenderList/get")
    URLSession.shared.dataTask(with: url!) { (data, response, error) in
        if error == nil{
            do{

                let result  = try JSONDecoder().decode(Gender.self, from: data!)
                print(result)
            }catch let error as NSError{

                print("Parse Error\(error)")
            }
        }

        }.resume()
}

我以这种方式得到我的结果:

性别(结果:[something.Gender.Result(genderCategory:“Male”),something.Gender.Result(genderCategory:“Female”),something.Gender.Result(genderCategory:“Transgender”),something.Gender.Result(性别类别:“其他”)])

但是我怎样才能只得到genderCategory 的值呢?

4

1 回答 1

2

result是一个数组Result,不是String

let result : [Result]

这是解码所有键的结构

struct Gender: Decodable {

    let message : String
    let statusCode : Int
    let result : [Result]

    enum CodingKeys :String, CodingKey {
        case message, statusCode = "status_code", result
    }

    struct Result: Decodable {

        let genderCategory: String
        let id : String

        enum CodingKeys : String, CodingKey {
            case genderCategory = "gender_category", id
        }
    }
}

获取gender_category

let gender = try JSONDecoder().decode(Gender.self, from: data!)
for item in gender.result {
    print(item.genderCategory)
}
于 2018-02-01T10:24:11.290 回答