gpt4 book ai didi

ios - 无法将类型 '[ViewController.MyStruct]' 的值分配给类型 '[ViewController.MyOtherStruct]'

转载 作者:行者123 更新时间:2023-11-28 14:04:39 25 4
gpt4 key购买 nike

我正在尝试解码 some JSON我不断收到错误:

无法将类型“[ViewController.Response]”的值分配给类型“[ViewController.Doc]”

据我所知,这两个结构的设置方式相同,所以我对这里的问题感到困惑。

这些是我的结构:

struct Status: Decodable {
let status: String
let response: [Response]
}

struct Response: Decodable {
let docs: [Doc]
}

struct Doc: Decodable {
let webUrl: String
let abstract: String

enum CodingKeys: String, CodingKey {
case webUrl = "web_url"
case abstract
}

init(from decoder:Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
abstract = try container.decode(String.self, forKey: .abstract)
webUrl = try container.decode(String.self, forKey: .webUrl)
}
}

当我在 viewDidLoad 中调用我的 fetchData 函数时抛出错误(在 object.response< 上的 .success 情况下出错):

    fetchData(url: jsonUrl) { (result: FetchResult<Status>) in
switch result {
case .success(let object): self.storyData = object.response
print("Results \n\n\n\n \(object.response)")
case .failure(let error): print(error)
}
}

编辑:这是我用 JSON 数据填充的数组:

var storyData = [Doc]()

最佳答案

storyData[Doc] 类型,因此您不能为其分配 [Response] 类型的值。您需要访问 Responsedocs 属性,您可以通过在 response 上调用 flatMap 来获取所有从响应数组中获取文档并将结果展平以获取 [Doc] 而不是 [[Doc]],您可以将其分配给 storyData

fetchData(url: jsonUrl) { (result: FetchResult<Status>) in
switch result {
case .success(let object):
self.storyData = object.response.flatMap{$0.docs}
print("Results \n\n\n\n \(object.response)")
case .failure(let error):
print(error)
}
}

关于ios - 无法将类型 '[ViewController.MyStruct]' 的值分配给类型 '[ViewController.MyOtherStruct]',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53120870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com