Как безопасно удалить строки в indexpath

Я думаю, что это довольно глупый вопрос, но я не нашел никакого решения для безопасного удаления строк в моем представлении таблицы.

calendarTableView.deleteRows(at: indexPaths, with: .fade)

Я хочу сначала проверить, есть ли какие-либо строки, прежде чем удалять их, потому что в настоящее время я получаю такую ​​ошибку, если пытаюсь, когда нет строк для удаления:

'attempt to delete row 6 from section 0 which only contains 0 rows before the update'

Мой массив для отображения / скрытия выглядит так:

var twoDimensionalArray = [
    ExpandableNames(isExpanded: false, names: ["Amy", "Bill", "Zack", "Steve", "Jack", "Jill", "Mary"]),
    ]

Удалите из массива источника данных перед удалением строки.

Azat 10.09.2018 09:42

как ты имеешь ввиду надежно? однако это простая политика, которой вы должны следовать: удалить строки + также удалить данные из источника данных; потому что они должны синхронизироваться, иначе вы получите такое же сообщение об ошибке.

holex 10.09.2018 09:43

Я не хочу удалять из источника данных. Я просто хочу, чтобы в моем табличном представлении эти строки больше не отображались. Эта команда вызывается, если я решаю скрыть строки раздела.

Noodledew 10.09.2018 09:45

Думаю, здесь нужно управлять двумя массивами. Один в качестве источника данных таблицы, а другой - для изменений, внесенных в массив источника данных таблицы.

Dharmesh Kheni 10.09.2018 09:49

@Noodledew, источник данных должен табличного представления должен быть как-то синхронизирован - это не обязательно. есть разные способы сделать это, например вы можете пометить элементы, которые нужно удалить, и оценить источник данных на основе этого, или вы можете создать совершенно другой источник данных для табличного представления - это только вопрос выбора.

holex 10.09.2018 09:59

Где вы написали метод deleteRows?

Ankit Jayaswal 10.09.2018 12:55

Это функция UITableView.

Noodledew 10.09.2018 13:40
0
8
88
2

Ответы 2

Нет необходимости управлять двумя массивами или удалять их из источника данных. Просто проверьте, равно ли количество строк! = 0, прежде чем удалять его.

let numberOfRows = calendarTableView.numberOfRows(inSection: section)

Надежно удалите строки, вы должны убедиться, что количество строк одинаковое до удаления и после, общее количество == новое количество (удалить после) + количество удалений

Другие вопросы по теме