gpt4 book ai didi

json - 数组 github Api Swift 中没有数据

转载 作者:行者123 更新时间:2023-11-28 06:02:12 25 4
gpt4 key购买 nike

如何从 if let 语句中获取“名称”到我的 TableView 中?代码立即触发 else block 。我正在尝试从 github api 解析名称数据。这是代码:

import UIKit
import Foundation

class ViewController: UITableViewController {

var tableArray = [String] ()

override func viewDidLoad() {
super.viewDidLoad()
self.tableView.dataSource = self
self.tableView.delegate = self
parseJSON()

}

func parseJSON () {

let url = URL(string: "https://api.github.com")

let task = URLSession.shared.dataTask(with: url!) {(data, response, error ) in

guard error == nil else {
print("returned error")
return
}

guard let content = data else {
print("No data")
return
}

guard let json = (try? JSONSerialization.jsonObject(with: content,
options: JSONSerialization.ReadingOptions.mutableContainers)) as?
[String: Any] else {
print("Not containing JSON")
return
}

if let array = json["name"] as? [String] {
self.tableArray = array
} else {

print("Name is blank")

}

print(self.tableArray)

DispatchQueue.main.async {
self.tableView.reloadData()
}


}

task.resume()
}

}

extension ViewController {

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as UITableViewCell
cell.textLabel?.text = self.tableArray[indexPath.row]

return cell
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

return self.tableArray.count



}

}

现在它在控制台中显示“name is blank”。我正在尝试获取用户的姓名并将其显示在表格 View 中。其他网址似乎有效,但我似乎无法弄清楚 Github。谢谢您的帮助。

最佳答案

你的错误是。
1. 使用了错误的网址。
2. 映射响应错误

https://api.github.com返回 Api 列表。
https://api.github.com/users/返回用户列表。

函数 fetchNameOfUsers
1.使用“用户列表”url实现请求。
2. 使用“用户列表”结构映射响应。

func fetchNameOfUsers() {
guard let url = URL(string: "https://api.github.com/users") else {
return
}
let request = URLRequest(url: url)
URLSession.shared.dataTask(with: request) { data, response, error in
guard error == nil else {
return // Error
}
guard let data = data, let _ = response else {
return // No data
}
guard let json = try? JSONSerialization.jsonObject(with: data, options: []) as? [[String: Any]] else {
return // Not [String: Any] list
}
let nameOfUsers = json.compactMap {
$0["login"] as? String
}
let displayedNameOfUsers = nameOfUsers.joined(separator: ", ")
print(displayedNameOfUsers)
}.resume()
}

要查看结果调用函数 fetchNameOfUsers。

fetchNameOfUsers()

关于json - 数组 github Api Swift 中没有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49291001/

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