gpt4 book ai didi

ios - 如何在 Swift 3 中用 JSON 数据填充表格?

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

我创建了一个 tableView,我想在其中放置使用此链接的新闻

   https://api.sis.kemoke.net/news

我想要获取并填充表中的三样东西。

    String title
String text
String link

这是我的课

    import Alamofire //Framework for handling http requests
import UIKit

/一个类,它将处理 http 请求,以字符串形式接收新闻,并用将显示在表格中的数据填充数组/类 NewsTableViewController: UITableViewController {

//Array which holds the news
var newsData:Array< String > = Array < String >()

// Download the news
func downloadData() {
Alamofire.request("https://api.sis.kemoke.net/news").responseJSON { response in
print(response.request) // original URL request
print(response.response) // HTTP URL response
print(response.data) // server data
print(response.result) // result of response serialization

//Optional binding to handle exceptions
if let JSON = response.result.value {
print("JSON: \(JSON)")
}
}
}

override func viewDidLoad() {
super.viewDidLoad()
downloadData()
extractData()
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}

// MARK: - Table view data source
// Number of sections i table vie
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}

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


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

// Extract the data from the JSON
func extractData() {
Alamofire.request("https://api.sis.kemoke.net/news").responseJSON { response in
debugPrint(response)

if let json = response.result.value {
print("JSON: \(json)")
self.newsData = json as! Array
}
}
}

// MARK: - Navigation

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}

稍后我也会尝试获取图像,但现在这三个变量应该足够了。

最佳答案

  • 首先为数据创建一个自定义结构

    struct News {
    let title : String
    let text : String
    let link : String

    init(dictionary: [String:String]) {
    self.title = dictionary["title"] ?? ""
    self.text = dictionary["text"] ?? ""
    self.link = dictionary["link"] ?? ""
    }
    }
  • 数据源数组为

    var newsData = [News]() 
  • 只使用downloadData(),删除其他方法。
    使用自定义结构,解析非常简单:

    func downloadData() {
    Alamofire.request("https://api.sis.kemoke.net/news").responseJSON { response in
    print(response.request) // original URL request
    print(response.response) // HTTP URL response
    print(response.data) // server data
    print(response.result) // result of response serialization

    //Optional binding to handle exceptions
    if let json = response.result.value as? [[String:String]] {
    self.newsData = json.map{ News(dictionary: $0) }
    self.tableView.reloadData()
    }
    }
    }
  • cellForRow...中显示标题

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

关于ios - 如何在 Swift 3 中用 JSON 数据填充表格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41431787/

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