结构化数据的搜索栏 Swift 4
Search bar for structured data Swift 4
我对 swift 很陌生...我有一个这样的数据模型 class:
class PostDataModel: NSObject {
var postID : Int = 0
var postTitle : String = ""
var postExcerpt : String = ""
var postContent : String = ""
var postThumbnailURL : String = ""
var postUpdated : String = ""
var postLink : String = ""
var postSlug : String = ""
}
我需要在 postTitle 中搜索在视图控制器中显示的搜索栏中编辑的文本:
//MARK: - Search bar methods inside the view controller
extension ViewController: UISearchBarDelegate {
func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
print(searchBar.text!)
shouldShowSearchResults = true
filteredTableData = postsArray.filter({[=12=].postTitle == searchBar.text})
tablePosts.reloadData()
}
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
if searchBar.text == nil || searchBar.text == "" {
shouldShowSearchResults = false
view.endEditing(true)
tablePosts.reloadData()
} else {
shouldShowSearchResults = true
filteredTableData = postsArray.filter({(item) -> Bool in
var stringMatch = item.postTitle.lowercased().range(of: searchBar.text!)
return stringMatch != nil ? true : false
})
tablePosts.reloadData()
}
}
}
四处搜索我找到了在字符串中只有文本可查找时的解决方案,但是如何根据标题中包含的文本过滤 PostDataModel 数组?
非常感谢。
在searchBar.text
中使用小写文本。
var stringMatch = item.postTitle.lowercased().range(of: searchBar.text!.lowercased())
我对 swift 很陌生...我有一个这样的数据模型 class:
class PostDataModel: NSObject {
var postID : Int = 0
var postTitle : String = ""
var postExcerpt : String = ""
var postContent : String = ""
var postThumbnailURL : String = ""
var postUpdated : String = ""
var postLink : String = ""
var postSlug : String = ""
}
我需要在 postTitle 中搜索在视图控制器中显示的搜索栏中编辑的文本:
//MARK: - Search bar methods inside the view controller
extension ViewController: UISearchBarDelegate {
func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
print(searchBar.text!)
shouldShowSearchResults = true
filteredTableData = postsArray.filter({[=12=].postTitle == searchBar.text})
tablePosts.reloadData()
}
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
if searchBar.text == nil || searchBar.text == "" {
shouldShowSearchResults = false
view.endEditing(true)
tablePosts.reloadData()
} else {
shouldShowSearchResults = true
filteredTableData = postsArray.filter({(item) -> Bool in
var stringMatch = item.postTitle.lowercased().range(of: searchBar.text!)
return stringMatch != nil ? true : false
})
tablePosts.reloadData()
}
}
}
四处搜索我找到了在字符串中只有文本可查找时的解决方案,但是如何根据标题中包含的文本过滤 PostDataModel 数组?
非常感谢。
在searchBar.text
中使用小写文本。
var stringMatch = item.postTitle.lowercased().range(of: searchBar.text!.lowercased())