使用Xcode的过滤器功能与NSMutableArray
问题描述:
我想制作一个应用程序,与电影名称列表,搜索功能,电影列表通过文本文件导入到称谓,我有问题使用Xcode
给出的filter
功能,我知道它的意思是看东西沿着这些路线,但什么会我把在该地区“AnyObject”使用Xcode的过滤器功能与NSMutableArray
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]()
我希望这是足够的信息omeone发出一些信息。 :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()
}
希望这有助于。
你在'arrayMovies'中存储了什么样的对象? (另外,为什么不使用Swift数据类型而不是NS *?) –
一如既往,**使用本机Swift数组而不是不相关的Foundation NSMutableArray **。编译器不知道 - 我也没有 - 数组实际包含的内容。 – vadian
嘿对不起我还在很新的编码,这是林存储巴里电影在这个阶段.... – Ibby