Это потому, что вы перезаписываете свою переменную marcas
. Вы устанавливаете фильтрованный массив на ту же самую переменную, поэтому, когда ваш текст searchBar пуст. Фильтрованный массив будет пустым, как и ваша переменная marcas
. То, что вам нужно сделать, это создать две переменные: т.е.
var marcas = [YourStruct]()
var marcasFiltradas = [YourStruct]()
Итак, вы бы изменили свою строку фильтрации следующим образом:
marcasFiltradas = marcas.filter {$0.nombre.lowercased().contains(searchText.lowercased()}
И вы бы изменили свои методы collectionView на что-то вроде это:
extension YourViewController: UICollectionViewDataSource {
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
filtrados ? marcasFiltradas.count : marcas.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath)
let marca = filtrados ? marcasFiltradas[indexPath.row] : marcas[indexPath.row]
// your code
return cell
}
}