簡體   English   中英

在Xcode中使用NSMutableArray使用filter函數

[英]Using the filter Function in Xcode with a NSMutableArray

我正在嘗試制作一個具有電影標題列表和搜索功能的應用程序,電影列表通過文本文件導入到名稱中,使用Xcode提供的filter功能時遇到問題,我知道這意味着沿着這些思路看,但是我會在“ 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)")
        }
    }

您可以使用Predicate來做到這一點:

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

希望對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM