gpt4 book ai didi

ios - 如何将 JSON 的值放入 TableView

转载 作者:行者123 更新时间:2023-11-28 13:34:58 25 4
gpt4 key购买 nike

我是 IOS 应用程序开发的初学者,我想将 JSON 文件的所有键的值添加到 tableView 中。

我已经尝试了下面的代码,但 tableView 仍然是空的。

import UIKit

class ViewController: UIViewController,UITableViewDelegate, UITableViewDataSource {

var arraylist = [String]()

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.

let session = URLSession.shared
let url = URL(string: "http://country.io/names.json")!

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

do {
if let json = try JSONSerialization.jsonObject(with: data!, options: []) as? [String: String] {
for (key, value) in json {
let someString = value
self.arraylist.append(someString)
}
}
} catch {
print("JSON error: \(error.localizedDescription)")
}
}
task.resume()
}

public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return(arraylist.count)
}

public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "cell")
cell.textLabel?.text = arraylist[indexPath.row]

return cell
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}


}

最佳答案

  • 首先检查是否

    • datasource 和 table view 的 delegate 连接到 Interface Builder 中的 View Controller 。
    • 原型(prototype)单元格的标识符设置为cell
  • 为表格 View 添加一个IBOutlet并在Interface Builder中连接它

    @IBOutlet weak var tableView : UITableView!
  • 给数据源数组起一个更有意义、更不委婉的名字

    var countries = [String]()
  • 填充数据源数组后在主线程上重新加载 TableView

    if let json = try JSONSerialization.jsonObject(with: data!) as? [String: String] {
    // easier way to get the country names
    self.countries = json.values.sorted()
    DispatchQueue.main.async {
    self.tableView.reloadData()
    }
    }
  • 总是dequeue 单元格

    public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
    {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
    cell.textLabel?.text = countries[indexPath.row]
    return cell
    }

并且return不是一个函数(没有括号)

return countries.count

关于ios - 如何将 JSON 的值放入 TableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56793678/

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