Swift 4: Фильтрация массива структур с помощью UISearchController

#arrays #swift #filter

Вопрос:

я хочу отфильтровать массив структур, которые были:

 var fullProveedoresFiltrados:[MCCollectionServicess]?
 

моя структура такова:

 struct MCServices: Decodable {
    var ciudad: String?
    var code: String?
    var name: String?
    var commission: String?
    var typeCommission: String?
    var balance: Bool?
    var typeService: String?
    var reference: String?
    var status: String?
    var image: String?
    var mcPlace : String?
    var provisioningCommission:String?
}

struct MCCollectionServicess: Decodable {
    var title: String?
    var data: [MCServices]?
}
 

я хочу получить только один элемент фильтрации по data.name и фильтрация всех разделов по названию, но мой фильтр возвращает весь раздел, когда я пытаюсь получить только элемент по имени.

мои поиски:

 func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
        
        guard let searchText = searchController.searchBar.text else { return }
        
        fullProveedoresFiltrados = fullProveedores!.filter({ proveedor -> Bool in
            
            for item in 0..<proveedor.data!.count {

                if proveedor.data![item].name!.forSortingTarjeta.lowercased().localizedCaseInsensitiveContains(searchText.lowercased().forSortingTarjeta) {
                    return proveedor.data![item].name!.forSortingTarjeta.lowercased().localizedCaseInsensitiveContains(searchText.lowercased().forSortingTarjeta)
                }

            }
            
            return proveedor.title!.forSortingTarjeta.lowercased().localizedCaseInsensitiveContains(searchText.lowercased().forSortingTarjeta)
             
        })
        
        changeButton.isHidden = fullProveedoresFiltrados!.count != 0 ? false : true
        noFoundResult.isHidden = fullProveedoresFiltrados!.count != 0 ? true : false
        
        collectionView.reloadData()
        
}
 

Комментарии:

1. Не связано, но почему все необязательно? Объявите все объекты, которые вы все равно заставляете разворачивать, необязательными, например var fullProveedoresFiltrados = [MCCollectionServicess]()

2. Может быть, вы могли бы добавить некоторые примеры данных, пример поиска и ожидаемый результат