gpt4 book ai didi

swift - Xcode 中的索引超出范围错误

转载 作者:搜寻专家 更新时间:2023-11-01 06:29:18 27 4
gpt4 key购买 nike

我正在创建一个使用数据库的应用程序,并使用标签来显示信息。我首先创建了一个包含日期信息的标签,当我运行该应用程序时它运行正常。当我为客队信息添加第二个标签时,我运行它并收到一条错误消息:“线程 1 fatal error :索引超出范围。”这与数据库有关,还是与 TableView 本身有关?

这是代码:

import UIKit
import Firebase

class srFootballViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

var ref = DatabaseReference()
var Date = [String]()
var awayTeam = [String]()
var databaseHandle:DatabaseHandle = 0
var databaseHandle2:DatabaseHandle = 0

@IBOutlet var footballTableView: UITableView!

override func viewDidLoad() {
super.viewDidLoad()

ref = Database.database().reference()
databaseHandle = ref.child("Dates").observe(.childAdded) { (snapshot) in

let post = snapshot.value as? String
if let actualPost = post {
self.Date.append(actualPost)
self.footballTableView.reloadData()
}
}

databaseHandle2 = ref.child("awayTeams").observe(.childAdded) { (snapshot) in

let post2 = snapshot.value as? String
if let actualPost2 = post2 {
self.awayTeam.append(actualPost2)
self.footballTableView.reloadData()
}
}

}


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

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

let footballCell = tableView.dequeueReusableCell(withIdentifier: "footballCell") as! srFootballCell
footballCell.date.text = Date[indexPath.row]
footballCell.awayTeam.text = awayTeam[indexPath.row]

return(footballCell)
}


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




}

最佳答案

首先,您不要命名以大写字母开头的变量。其次,由于您使用两个不同的数组在 TableView 中加载数据,awayTeam 会使您的应用程序崩溃,因为它没有 Date 数组那么多的元素,因为您使用 Date.count 作为部分中的行数。

改变

databaseHandle = ref.child("Dates").observe(.childAdded) { (snapshot) in

let post = snapshot.value as? String
if let actualPost = post {
self.Date.append(actualPost)
self.footballTableView.reloadData()
}
}

databaseHandle = ref.child("Dates").observe(.childAdded) { (snapshot) in

let post = snapshot.value as? String
if let actualPost = post {
self.Date.append(actualPost)
}
}

因此您不会在加载 awayTeam 数据之前重新加载 TableView 数据。

关于swift - Xcode 中的索引超出范围错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49561269/

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