【发布时间】:2018-02-01 10:15:24
【问题描述】:
我是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()
}
我以这种方式得到我的结果:
Gender(result: [something.Gender.Result(genderCategory: "Male"), something.Gender.Result(genderCategory: "Female"), something.Gender.Result(genderCategory: "Transgender"), something.Gender .Result(genderCategory: "Others")])
但是我怎样才能只得到genderCategory的值呢?
【问题讨论】:
-
let result : [String]你是说let result : [Result]?因为result是一个字典数组,而不是字符串数组,所以当你读取它(解码)时,你就会遇到问题。 -
这是一个类型不匹配,它的结果是:[结果],我也做过,但我想要一个实际的答案
标签: arrays json xcode jsondecoder