2016-09-29 46 views
0

我想制作一个应用程序,与电影名称列表,搜索功能,电影列表通过文本文件导入到称谓,我有问题使用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)") 
     } 
    } 
+1

你在'arrayMovies'中存储了什么样的对象? (另外,为什么不使用Swift数据类型而不是NS *?) –

+1

一如既往,**使用本机Swift数组而不是不相关的Foundation NSMutableArray **。编译器不知道 - 我也没有 - 数组实际包含的内容。 – vadian

+0

嘿对不起我还在很新的编码,这是林存储巴里电影在这个阶段.... – Ibby

回答

0

你可以用谓词做到这一点:

func updateSearchResultsForSearchController(searchController: UISearchController) { 
      let resultPredicate = NSPredicate(format: "name contains[c] %@", searchController.searchBar.text) 
      self.filteredUserData = self.arrayMovies.filteredArrayUsingPredicate(resultPredicate) 
      self.resultsController.tableView.reloadData() 
    } 

希望这有助于。