JSON解码结构有一个键,但是Xcode调用SwiftUI中没有这个键的成员



我想从GitHub获得repo名称的文本值。结构体被成功解码,但我似乎无法得到一个对我很重要的值(name)。

请问有人能帮帮忙吗?Swift文件代码:

译码器

class NetworkingManager: ObservableObject{
@Published var repos = [Repository]()

init() {
loadData()
}

func loadData() {
guard let url = URL(string: "https://api.github.com/users/jacobtoye/repos") else { return }
URLSession.shared.dataTask(with: url) {(data, _, _) in
guard let data = data else { return }
DispatchQueue.main.async {
do {
self.repos = try JSONDecoder().decode([Repository].self, from: data)
} catch {
fatalError("Failed to decode given URL")
}
}
}.resume()
}
}

apikey

import Foundation
struct Repository: Decodable, Identifiable {
let id: Int
let name: String
let owner: Owner

enum CodingKeys: String, CodingKey {
case id, owner
case name
}
}
struct Owner : Decodable, Identifiable {
let id: Int
let reposUrl : String
enum CodingKeys: String, CodingKey, CaseIterable {
case id
case reposUrl = "repos_url"
}
}

内容视图

import SwiftUI
struct ContentView: View {
@StateObject var netManager = NetworkingManager()

var body: some View {
Text("(netManager.repos.name)")
}
}

我得到的错误是:类型[Repository]的值没有成员'name'。

在最后的项目中,我想使用这个值作为navigationTitle,所以ForEach解决方案从这里:类型[x]的SwiftUI值没有成员[y],但结构体有成员似乎不适合我。

netManager.reposRepository的数组,它没有名称,正如错误告诉您的那样。您必须选择单个repo并从中获取名称。

例如

Text("(netManager.repos.first?.name ?? "no name")")

相关内容

最新更新