大佬教程收集整理的这篇文章主要介绍了从 SwiftUI 中的 API 获取 JSON 数据时出现 keyNotFoundError,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我最近开始学习使用 Swift 编写代码,并且一直在努力从 API 获取数据。这是数据的样子:
{
"status":200,"posts":[
{
"text":"djnkdnwnjdewkn","date":"08/07/2012"
},{
"text":"dskndkc ksdskj n","date":"08/17/2012"
},{
"text":"dkjdjincIDjn","date":"09/07/2012"
}
]
}
@H_616_6@
这是我使用的代码:
import SwiftUI
import Foundation
import Combine
struct Post: Codable,IDentifiable {
public var ID = UUID()
public var text,date: String
}
struct Feed: Codable {
public var status: Int
public var posts: [Post]
}
class Fetchposts: ObservabLeobject {
@Published var posts = [Post]()
init() {
let url = URL(String: "API goes here")!
URLSession.shared.dataTask(with: url) {(data,response,error) in
do {
if let postData = data {
let decodedData = try JsONDecoder().decode(Feed.self,from: postData)
dispatchQueue.main.async {
self.posts = decodedData.posts
}
} else {
print("No data")
}
} catch {
print(error)
}
}.resume()
}
}
struct FeedVIEw: VIEw {
@Observedobject var fetch = Fetchposts()
var body: some VIEw {
ScrollVIEw{
vstack {
ForEach(fetch.posts) { post in
vstack(alignment: .leading) {
Text(post.text)
Text("\(post.datE)")
.Font(.system(size: 11))
.foregroundcolor(color.gray)
}
}
}
}
}
}
@H_616_6@
到目前为止我还没有能够生成任何输出,但我收到了一个错误:
"keyNotFound(CodingKeys(stringvalue: "ID",intValue: nil),Swift.DeCodingError.Context(CodingPath: [CodingKeys(stringvalue: "posts",_JsONKey(stringvalue: "Index 0",intValue: 0)],deBUGDescription: "没有与键 CodingKeys(stringvalue: "ID",intValue: nil) ("ID") 相关联的值,"underlyingError: nil))"
任何帮助将不胜感激!
添加CodingKeys @H_616_6@
struct Post: Codable,Identifiable {
public var id = UUID()
public var text,date: String
enum CodingKeys: String,CodingKey { // add this for keys to be decoded
case text,date
}
}
@H_616_6@
,
如果结构的所有属性不是 json 的一部分,您需要为结构定义 CodingKey 枚举并列出包含在 json 中的属性
enum CodingKeys: String,CodingKey {
case text,data
}
@H_616_6@
@H_618_37@
以上是大佬教程为你收集整理的从 SwiftUI 中的 API 获取 JSON 数据时出现 keyNotFoundError全部内容,希望文章能够帮你解决从 SwiftUI 中的 API 获取 JSON 数据时出现 keyNotFoundError所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。