Ich habe diesen seltsamen App-Absturz beim Ziehen zum Aktualisieren auftritt.Schwerwiegender Fehler: Index außerhalb des Bereichs beim Aktualisieren der Tabellenansicht
Mein Code geht wie folgt:
var posts: [Posts] = []
override func viewDidLoad() {
super.viewDidLoad()
// refreshControl -> pull to refresh handler
let refreshControl = UIRefreshControl()
refreshControl.addTarget(self,
action: #selector(Main_TVC.getData),
for: UIControlEvents.valueChanged)
self.refreshControl = refreshControl
getData()
}
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return posts.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell",
for: indexPath) as! PostsTableViewCell
cell.titleLabel.text = posts[indexPath.row].postTitle
cell.bodyLabel.text = posts[indexPath.row].postBody
return cell
}
func getData() {
self.posts.removeAll()
// queries the backend and fills the data - sorry for code omission
refresh()
}
func refresh() {
self.tableView.reloadData()
self.refreshControl?.endRefreshing()
}
Die App läuft richtig und auch wenn ich refresh nach unten ziehen zu, alles läuft perfekt, aber wenn ein lange nach unten ziehen zu aktualisieren tun, wie unten fast ziehen schlagen die Unterseite des Bildschirms, die app abstürzt und fordert den folgenden Fehler:
fatale Fehler: Index außerhalb des Bereichs
auf der Linie
cell.titleLabel.text = Beiträge [indexPath.row] .postTitle
Wenn ich die Post-Zähler und die indexPath drucken, wie folgt:
print ("posts.count = (Beiträge. count) ") print (" indexPath.row = (indexPath.row) ")
Als ich in der normalen Art und Weise bin nach unten ziehen, es druckt die korrekten Daten, aber wenn ich nach unten ziehen, wie ein langer Zug, durch den gesamten Bildschirm, wenn dies beim Absturz angezeigt wird s
posts.count = 0
indexPath.row = 2
Diese Art der Sache geschehen ist mir noch nie die refreshControl mit der Art, wie ich hier bin mit.
Hope meine Informationen sind verständlich, vor allem auf den langen Pull zu aktualisieren Problem.
a) könnte aktualisieren() mehr als einmal ausgelöst werden (ich bezweifle es, aber nur bestätigen).b) Wie manipulierst du die Datenquelle in deinem weggelassenen Code? –