TableView内に検索バーを作成しようとしています。私はUIに検索バーを得ることができましたが、私は検索機能のロジックに苦労しています。私はチュートリアルに従っていますが、まだコードにエラーがあります。検索バーの作成時にエラーが発生しました:条件バインディングの初期化ツールに 'String'ではなくOptionタイプが必要です
すべてのデータがjsonファイルで正しく読み込まれています。
'filterContent(for:)'関数でエラーが発生しました。エラーは、「条件付きバインディングの初期化子には「文字列」ではなくオプションの型が必要です」というメッセージが表示されます。
ここに、私のTableViewクラス内の関連コードがあります。 (エラーのある行にコメントが書き込まれていることに注意してください)。
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()
}
}
あなたの答えをありがとう。私はすでにこれを試みたと述べたはずです。しかし、アプリケーションをビルドすると、アプリケーションを開くときにクラッシュします。ログには「致命的なエラー:オプション値をアンラッピングしている間に予期せずnilが見つかりました」と表示されます。 – joshlorschy