У меня есть табличное представление, которое показывает список вещей с идентификатор, имя, цена и количество (получено из itemsArr array ).Когда я выбираю один предмет, я добавляю детали вещи ( идентификатор, имя, цена, количество ) в массив (массив элементов) .И когда я отменяю выбор элемента , , детали ( идентификатор, имя, цена, количество ) элемента, добавленного в этот массив , должныбыть удаленным .У меня нет проблем с добавлением деталей в массив, но моя проблема в том, что я не знаю , каков лучший способ удалить все детали этого элемента из массива.Ниже мой код:
var item = MyList()
var items = [MyList]()
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let cell = tableView.cellForRow(at: indexPath)
cell?.accessoryType = .checkmark
if let itemSel = itemsArr?[indexPath.row] {
delegate?.didSelectItemsListItem(id: itemSel.id, name: itemSel.name, price: itemSel.price)
// Add item details into array
item.id = itemSel.id
item.name = itemSel.name
item.price = itemSel.price
item.quantity = 1
self.items.append(item)
print("Added items: ", self.items)
}
}
func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
let cell = tableView.cellForRow(at: indexPath)
cell?.accessoryType = .none
// Remove item details from array
if let itemdeSel = itemsArr?[indexPath.row] {
delegate?.didDeselectItemsListItem(id: itemdeSel.id, name: itemdeSel.name, price: itemdeSel.price)
if let index = itemsArr?.index(where: { $0.id == itemdeSel.id }) {
// removing item
self.items.remove(at: index)
print("Items after removed: ", self.items)
}
}
}
отметил, что количество для всех предметов составляет 1 .Я хочу попробовать использовать метод фильтра, но я боюсь, что все количество других предметов также будет удалено, так как количество одинаково.Ниже приведен пример массива элементов (к которому элементы были добавлены:
[(id: 4, name: "book", price: "3.00", quantity: 1), (id: 2, name: "pen", price: "1.00", quantity: 1)]
ОБНОВЛЕНИЕ: На самом деле я могу просто использовать метод фильтра. Я не знал метод фильтраЯ могу удалить все детали этого элемента. Ниже мой последний код deSelect:
func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
let cell = tableView.cellForRow(at: indexPath)
cell?.accessoryType = .none
// Remove item details from array
if let itemdeSel = itemsArr?[indexPath.row] {
delegate?.didDeselectItemsListItem(id: itemdeSel.id, name: itemdeSel.name, price: itemdeSel.price)
let filteredArray = self.items.filter { $0.id != itemdeSel.id }
self.items.removeAll()
self.items = filteredArray
print("Items after removed: ", self.items)
}
}