gpt4 book ai didi

IOS/Swift JSON 请求后渲染表

转载 作者:行者123 更新时间:2023-11-28 21:51:40 26 4
gpt4 key购买 nike

我是 IOS 的新手,而且速度很快。我正在尝试实现一个返回 json 的 api get 请求,然后将其显示在表中。以下是我当前的代码。当我运行模拟器时,出现以下错误:

fatal error :无法索引空缓冲区

如果我删除 tableView 函数中的硬编码 return 3 并改为使用 doDatItems.count,则表中不会呈现任何内容,因为我猜 doDatItems 数组在发出 get 请求之前开始为空。好像是时间问题?如何确保在加载表之前发出获取请求?

import UIKit

class ViewController: UIViewController, UITableViewDelegate {

var doDatItems:[String] = []

@IBOutlet weak var doDatItem: UITextField!

@IBOutlet weak var yourDoDats: UILabel!

@IBAction func addDoDat(sender: AnyObject) {

doDatItems.append(doDatItem.text)

println(doDatItems)
}


override func viewDidLoad() {
super.viewDidLoad()

let urlPath = "http://localhost:3000/dodats"
let url: NSURL = NSURL(string: urlPath)!
let session = NSURLSession.sharedSession()

let task = session.dataTaskWithURL(url, completionHandler: {data, response, error -> Void in
println("Task completed")
if((error) != nil) {
// If there is an error in the web request, print it to the console
println(error.localizedDescription)
}
var err: NSError?
var jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as NSDictionary
if(err != nil) {
// If there is an error parsing JSON, print it to the console
println("JSON Error \(err!.localizedDescription)")
} else {
let dataArray = jsonResult["dodats"] as [String]

for item in dataArray {
self.doDatItems.append(item)
}

// println(self.doDatItems)

}

})

task.resume()
}

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

return 3

}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{

let cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "Cell")

println(self.doDatItems)

cell.textLabel?.text = self.doDatItems[indexPath.row]

return cell
}


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


}

最佳答案

我发现了几个问题——

  1. 您的 ViewController 应该符合 UITableViewDatasource(它丢失了,不确定它是如何做到这一点的)

  2. 当 self.doDatItems 没有任何项目时,不返回 3。它会导致崩溃。只要数据加载让表保持为空。返回 self.doDatItems.count

  3. 从 self.doDatItems 数组加载数据并准备好显示后,只需调用 TableView 的 reloadData() 方法即可。

  4. 在此之前,您应该有一个 tableView 的引用(或 IBOutlet),以便您可以从任何地方调用 reloadData()。

关于IOS/Swift JSON 请求后渲染表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28092961/

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