Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 获取api swift可编码和模型数据中的位置_Ios_Swift_Codable - Fatal编程技术网

Ios 获取api swift可编码和模型数据中的位置

Ios 获取api swift可编码和模型数据中的位置,ios,swift,codable,Ios,Swift,Codable,我从这样的api获取数据 [ { "internData": { "id": "abc123", "name": "Doctor" }, "author": "Will smith", "description": "Is an actor", "url": "https://www", }, { "internData": { "id": "qwe900", "name": "Const

我从这样的api获取数据

[
  {
    "internData": {
      "id": "abc123",
      "name": "Doctor"
    },
    "author": "Will smith",
    "description": "Is an actor",
    "url": "https://www",
  },
  {
    "internData": {
      "id": "qwe900",
      "name": "Constructor"
    },
    "author": "Edd Bett",
    "description": "Is an Constructor",
    "url": "https://www3",
  }
]
struct PersonData: Codable {
    let author: String?
    let description: String?
    let url: String?
}
我有这样的模型

[
  {
    "internData": {
      "id": "abc123",
      "name": "Doctor"
    },
    "author": "Will smith",
    "description": "Is an actor",
    "url": "https://www",
  },
  {
    "internData": {
      "id": "qwe900",
      "name": "Constructor"
    },
    "author": "Edd Bett",
    "description": "Is an Constructor",
    "url": "https://www3",
  }
]
struct PersonData: Codable {
    let author: String?
    let description: String?
    let url: String?
}
但我不知道如何定义“internData”,我尝试了另一个模型“InterData”,并像PersonData一样定义id和名称,但我得到了一个错误,我也尝试了[String:Any],但我得到了一个可编码协议的错误

我正在使用

let resP = try JSONSerialization.jsonObject(with: data, options: .init()) as? [String: AnyObject]
            print("resP", )
在我的服务/网络脚本中


如果有人知道
您不能在
可编码的情况下使用
[String:Any]
类型,谢谢。您需要创建另一个
InternData
模型,该模型由
PersonData
使用

代码:

JSON数据:

let jsonData =
"""
[
{
"internData": {
"id": "abc123",
"name": "Doctor"
},
"author": "Will smith",
"description": "Is an actor",
"url": "https://www",
},
{
"internData": {
"id": "qwe900",
"name": "Constructor"
},
"author": "Edd Bett",
"description": "Is an Constructor",
"url": "https://www3",
}
]
"""
//模型

struct PersonData: Codable {
    let author: String?
    let description: String?
    let url: String?
    let internData : InternData?
}

// New model 

struct InternData : Codable {
    let id : String?
    let name : String?
}
//解析

do {
    let parseRes = try JSONDecoder().decode([PersonData].self, from: Data(jsonData.utf8))
    print(parseRes)
}
catch {
     print(error)
}

请不要建议打印
本地化描述
,在解码上下文中,始终打印
错误
实例
localizedDescription
显示了一条无意义的一般错误消息。jsonData是什么?您可以使用
Data
的对象(数据)。我得到这个错误err valueNotFound(Swift.String,Swift.DecodingError.Context(编码路径:[\u JSONKey(stringValue:“索引0”,intValue:0),编码键(stringValue:“interData”,intValue:nil),CodingKeys(stringValue:“id”,intValue:nil)],debugDescription:“应为字符串值,但找到的却是null。”,underyingError:nil))