web-dev-qa-db-fra.com

erreur fatale: index hors limites

Je veux montrer 25 des chansons que j'ai dans ma bibliothèque. Voici mon code:

var allSongsArray: [MPMediaItem] = []
let songsQuery = MPMediaQuery.songsQuery()

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 25 //allSongsArray.count
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("cell")
    let items = allSongsArray[indexPath.row]
    cell?.textLabel?.text = items.title
    cell?.detailTextLabel?.text = items.artist
    cell?.imageView?.image = items.artwork?.imageWithSize(imageSize)

    return cell!
}

Lorsque je lance cela, il se bloque, car:

erreur fatale: index hors limites

J'ai essayé de changer le numberOfRowsInSection en allSongsArray.count, mais il se retrouve avec la même erreur.

14
J.Vongehr

Vous devez retourner allSongsArray.count et pour éviter d'être renvoyé des cellules vides, utilisez yourTableView.reloadData après avoir rempli votre allSongsArray.

14
Manuel

Lorsque vous créez le tableau pour la première fois, il est vide. Par conséquent, cela vous donnera une erreur hors limite.

Essayez plutôt de renvoyer le nombre de morceaux.

Tout d'abord, vous devez entrer les données dans le tableau, puis mettre à jour la vue de la table.

Voici un exemple de code:

@IBAction private func refresh(sender: UIRefreshControl?) {
        if myArray.count > 0 {
              self.tableView.reloadData()
              sender?.endRefreshing()
        } else {
              sender?.endRefreshing()
        }
    }
3
Ali Alebrahim

Veuillez renvoyer le nombre réel de tableaux au lieu de statique

return allsongsarray.count
1
Sabby