J'essaie de créer une barre de recherche dans un TableView. J'ai été en mesure d'obtenir la barre de recherche dans l'interface utilisateur, mais je suis aux prises avec la logique de la fonctionnalité de recherche. J'ai suivi un tutoriel, mais j'ai toujours une erreur dans le code.Erreur lors de la création d'une barre de recherche: L'initialiseur pour la liaison conditionnelle doit avoir le type Option, pas 'Chaîne'
Toutes les données sont lues correctement via un fichier json. '
Je reçois une erreur dans la fonction 'filterContent (for:)'. L'erreur indique que "Initializer pour la liaison conditionnelle doit avoir le type facultatif, pas 'String'"
Voici le code approprié dans ma classe TableView. (Notez la ligne avec l'erreur marquée d'un commentaire).
import UIKit
class LocationTableViewController: UITableViewController, UISearchResultsUpdating {
var locations = [Location]()
var searchController:UISearchController!
var searchResults = [Location]()
override func viewDidLoad() {
super.viewDidLoad()
searchController = UISearchController(searchResultsController: nil)
tableView.tableHeaderView = searchController.searchBar
searchController.searchResultsUpdater = self
searchController.dimsBackgroundDuringPresentation = false
}
func filterContent(for searchText: String) {
searchResults = locations.filter({ (location) -> Bool in
// The following line receives the error
if let name = location.name {
let isMatch = name.localizedCaseInsensitiveContains(searchText)
return isMatch
}
return false
})
}
func updateSearchResults(for searchController: UISearchController) {
if let searchText = searchController.searchBar.text {
filterContent(for: searchText)
tableView.reloadData()
}
}
Merci pour votre réponse. J'aurais dû mentionner que j'ai déjà essayé cela. L'application génère, cependant, il se bloque lors de l'ouverture de l'application. Le journal lit 'erreur fatale: trouvé de manière inattendue nil tout en déballant une valeur facultative.' – joshlorschy