我正在尝试制作一个应用程序,其中包含电影标题列表和搜索功能,电影列表通过文本文件导入到名称中,我在使用过滤器
时遇到问题> Xcode 中给出的函数,我知道它的意思是沿着这些线查找一些东西,但是我会在“AnyObject”区域中放置什么
func updateSearchResultsForSearchController(searchController: UISearchController) {
self.filteredMovies = self.arrayMovies.filter { (<#AnyObject#>) -> Bool in
return true
}
self.resultsController.tableView.reloadData()
}
这些是我的变量
var dictMovies = [String:String]()
var arrayMovies = NSMutableArray()
var searchController : UISearchController!
var resultsController = UITableViewController()
var filteredMovies = [String]()
我希望这足以让某人提供一些信息。 :D
编辑这是我存储在 arrayMovies 中的内容
let path = NSBundle.mainBundle().pathForResource("movielist2", ofType: "txt")
let filemgr = NSFileManager.defaultManager()
if filemgr.fileExistsAtPath(path!){
do{
let fullText = try String(contentsOfFile: path!, encoding: NSUTF8StringEncoding)
let readings = fullText.componentsSeparatedByString("@") as [String]
for i in 1..<readings.count {
let movieData = readings[i].componentsSeparatedByString("\t")
dictMovies["MovieTitle1"] = "\(movieData[0])"
dictMovies["MovieYear"] = "\(movieData[1])"
arrayMovies.addObject(dictMovies)
}
} catch let error as NSError{
print("Error: \(error)")
}
}
最佳答案
您可以使用谓词来做到这一点:
func updateSearchResultsForSearchController(searchController: UISearchController) {
let resultPredicate = NSPredicate(format: "name contains[c] %@", searchController.searchBar.text)
self.filteredUserData = self.arrayMovies.filteredArrayUsingPredicate(resultPredicate)
self.resultsController.tableView.reloadData()
}
希望这有帮助。
关于ios - 在 Xcode 中使用带有 NSMutableArray 的过滤器函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39775949/