Индекс выходит за пределы диапазона при удалении значения из массива - PullRequest
0 голосов
/ 02 августа 2020

Я добавляю значения в массив, когда пользователь щелкает ячейку следующим образом:

var savedArray = [] as Array
self.savedArray.append(obj[indexPath.row].title as Any)

Это успешно сохраняет значения. Но когда я хочу удалить их (когда они снимают выделение ячейки), появляется сообщение «Fatal Index out of range».

let number = indexPath.row       
self.savedArray.remove(at: number)

Как ни странно, этот код работает для первого (0) indexPath, но не другие. Есть исправление? Спасибо.

1 Ответ

1 голос
/ 02 августа 2020

Вы используете указатель другой коллекции. Почему вы ожидаете, что оба элемента будут в одном индексе? Что происходит, так это то, что две коллекции имеют разное количество элементов. Сначала измените объявление вашего saveArray. Не используйте Any. Используйте тип своего элемента. Сделайте свой тип массива таким же, как и свойство title. Затем найдите firstIndex вашего элемента в вашем savedArray и удалите его.

Ваш код должен выглядеть примерно так (если ваше свойство title является String):

Объявление массива:

var savedArray: [String] = []

Добавление новых элементов:

self.savedArray.append(obj[indexPath.row].title)

Удаление элемента:

if let index = self.savedArray.firstIndex(of: obj[indexPath.row].title) {
    self.savedArray.remove(at: index)
}      
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...