0
votes

Difficulté à mettre en œuvre la barre de recherche SWIFT / iOS avec la matrice de structure

J'ai une matrice de structure que j'utilise pour renseigner ma tableView. Mais je suis incapable d'obtenir que ma barre de recherche fonctionne correctement. Mon code de barre de recherche d'origine a été créé lorsque j'utilisais un tableau plus "basique". Après la conversion à la structure, cela ne fonctionne plus. Je reçois 3 erreurs de Xcode. J'ai identifié les erreurs dans le code avec // <- erreur. Merci pour votre aide!

 XXX                          

0 commentaires

4 Réponses :


2
votes

Il n'y a pas

searchMaterial[indexPath.row]


0 commentaires

2
votes

1) cell.textLabel? .Text = matérielsData [indénitation.row] Le matérialData [IndexPath.row] vous fournira un objet de matériau de type et non de chaîne. Je ne sais pas quelle valeur vous attendez. Mais le remplacer à xxx pré>

2) SearchMaterial = matériauData.filter ({$ 0.prefix.Count.Count) == SearchText}) //

Changer de P>

   var searchMaterial:[Material] = []
   searchMaterial = materialData.filter { $0.name.contains(searchText) }


2 commentaires

La première suggestion a résolu l'erreur associée. Merci! La seconde a toutefois renvoyé la même erreur: /


Var ChercheurMaterial: [Matériel] = [] - Changez le type de rechercheMaterial pour être cohérent avec matérielsData



0
votes

Voulez-vous rechercher par Nom code>? Si tel est le cas, vous pouvez corriger la deuxième erreur code> code> comme ceci: xxx pré>

Le premier peut être corrigé comme suit: P>

cell.textLabel?.text = materialData[indexPath.row].name


0 commentaires

1
votes

hi Sean je crois que j'ai résolu cela,

Tout dans vos fonctions de délégués de la vue de table sont corrects p>

Assurez-vous de créer ce var au niveau supérieur P>

 func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
    guard !searchText.isEmpty else {
        searchMaterial = materialData
        tableView.reloadData()
        return // When no items are typed, load your array still 

    }
    searchMaterial = materialData.filter({ (Material) -> Bool in
        Material.title.lowercased().contains(searchText.lowercased())
 })
    searchBar.setShowsCancelButton(true, animated: true)
    searching = true
    tableView.reloadData()


0 commentaires