gpt4 book ai didi

ios - Swift 4.2 解码对象未知键

转载 作者:行者123 更新时间:2023-11-28 19:26:24 26 4
gpt4 key购买 nike

我目前正在构建一个应用程序作为个人项目,它依赖于从服务器获取数据。我可以成功获取数据,但是在尝试解码时遇到了麻烦。我面临的问题是,在我从服务器收到某些对象之前,我不知道它们的 key 。我取回的数据如下所示:

{
"result": 0,
"id": 1,
"error": null,
"data": {
"UNKOWN_KEY": {
"knownKey": "test",
"knownKey": "test",
"knownKey": "test",
},
"UNKOWN_KEY": {
"knownKey": "test",
"knownKey": "test",
"knownKey": "test",
},
"UNKOWN_KEY": {
"knownKey": "test",
"knownKey": "test",
"knownKey": "test",
},
"UNKOWN_KEY": {
"knownKey": "test",
"knownKey": "test",
"knownKey": "test",
}
}
}

我这辈子都想不出如何解码那些 UNKOWN_KEY,这阻碍了我的进步。我试过使用以下内容:

let dynamicContainer = try decoder.container(keyedBy: DeviceDataKey.self)

for key in dynamicContainer.allKeys {
if let deviceData = try? dynamicContainer.decode(ACDeviceData.self, forKey: key) {
data.insert(deviceData, at: 0)
}
}

任何人都可以提供任何帮助,我们将不胜感激。提前致谢。

最佳答案

"data" 的值是一个字典,其键类型为 String,值作为您的自定义模型。如果您正在使用 Codable,只需将 data 的类型指定为字典

let data: [String: YourModel]

然后将接收到的Data解码为您的Response模型

struct Response: Decodable {
let result, id: Int
let error: String?
let data: [String: YourModel]
}

struct YourModel: Decodable {
let knownKey: String
}

如果您需要获取所有模型,只需在您的字典上使用compactMap

do {
let decoded = try JSONDecoder().decode(Response.self, from: data)
let models = decoded.data.compactMap { $0.value }
} catch { print(error) }

关于ios - Swift 4.2 解码对象未知键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55002269/

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