Подтвердить что ты не робот

Фатальная ошибка: индекс вне диапазона

Я хочу показать 25 песен, которые у меня есть в моей библиотеке. Это мой код:

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!
}

Когда я запускаю это, он сбой, потому что:

фатальная ошибка: индекс за пределами диапазона

Я попытался изменить numberOfRowsInSection на allSongsArray.count, но в итоге получилась та же ошибка.

4b9b3361

Ответ 1

Вы должны вернуть allSongsArray.count, и чтобы не возвращать пустые ячейки, используйте yourTableView.reloadData после того, как вы заполните allSongsArray.

Ответ 2

Когда вы сначала создаете массив, он пуст. Следовательно, он выдаст вам ошибку.

Попробуйте вернуть счетчик массива песен.

1 вам нужно получить данные в массиве, а затем обновить представление таблицы.

Вот пример кода:

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

Ответ 3

Пожалуйста, верните фактическое количество массивов вместо статического

return allsongsarray.count