使用 UISearchController 按对象 属性 搜索?
Searching by object property with UISearchController?
在我的 updateSearchResultsForSearchController
方法中,我有一个用于查找匹配项的 searchPredicate,但是,我想学习如何将它与对象的 属性 一起使用。
我有一个名为 Product
的对象,它有一个名为 title
的字符串 属性,我想将其用作我的搜索参数。到目前为止,这是我的搜索功能的样子:
func updateSearchResultsForSearchController(searchController: UISearchController) {
productSearchResults.removeAll(keepCapacity: false)
let searchPredicate = NSPredicate(format: "SELF CONTAINS[c] %@", searchController.searchBar.text)
let array = (orderGuideItemsList as NSArray).filteredArrayUsingPredicate(searchPredicate)
productSearchResults = array as! [Product]
self.tableView.reloadData()
}
其中 orderGuideItemsList
是 Product
个对象的数组
那我有没有办法根据Proudct
的title
属性进行搜索呢?它不必使用谓词,但这是我从之前的教程中得到的。
谢谢!
您可以将谓词更新为
let searchPredicate = NSPredicate(format: "SELF.title CONTAINS[c] %@", searchController.searchBar.text)
这应该没问题。
在我的 updateSearchResultsForSearchController
方法中,我有一个用于查找匹配项的 searchPredicate,但是,我想学习如何将它与对象的 属性 一起使用。
我有一个名为 Product
的对象,它有一个名为 title
的字符串 属性,我想将其用作我的搜索参数。到目前为止,这是我的搜索功能的样子:
func updateSearchResultsForSearchController(searchController: UISearchController) {
productSearchResults.removeAll(keepCapacity: false)
let searchPredicate = NSPredicate(format: "SELF CONTAINS[c] %@", searchController.searchBar.text)
let array = (orderGuideItemsList as NSArray).filteredArrayUsingPredicate(searchPredicate)
productSearchResults = array as! [Product]
self.tableView.reloadData()
}
其中 orderGuideItemsList
是 Product
个对象的数组
那我有没有办法根据Proudct
的title
属性进行搜索呢?它不必使用谓词,但这是我从之前的教程中得到的。
谢谢!
您可以将谓词更新为
let searchPredicate = NSPredicate(format: "SELF.title CONTAINS[c] %@", searchController.searchBar.text)
这应该没问题。