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 PRE> P>
4 Réponses :
Il n'y a pas
searchMaterial[indexPath.row]
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 à 2) SearchMaterial = matériauData.filter ({$ 0.prefix.Count.Count) == SearchText}) // Changer de P> var searchMaterial:[Material] = []
searchMaterial = materialData.filter { $0.name.contains(searchText) }
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
Voulez-vous rechercher par Le premier peut être corrigé comme suit: P> Nom code>? Si tel est le cas, vous pouvez corriger la deuxième erreur code> code> comme ceci:
cell.textLabel?.text = materialData[indexPath.row].name
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()