过滤NSMutableArray

时间:2015-03-25 23:28:15

标签: ios uitableview swift

我正在使用Swift创建一个iOS应用程序,我有一个函数可以获取文档目录中所有文件的列表,并将它们放在NSMutableArray中。

我正在搜索如何使用SearchBar过滤表格视图中的项目。

是否可以将NSMutableArray中的所有项目放入常规数组中供我使用,或者是否可以修改下面的代码以使用NSMutableArray

教程:

  var data = ["San Francisco","New York","San Jose","Chicago","Los Angeles","Austin","Seattle"]
var filtered:[String] = []

func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {

    filtered = data.filter({ (text) -> Bool in
        let tmp: NSString = text
        let range = tmp.rangeOfString(searchText, options: NSStringCompareOptions.CaseInsensitiveSearch)
        return range.location != NSNotFound
    })
    if(filtered.count == 0){
        searchActive = false;
    } else {
        searchActive = true;
    }
    self.tableView.reloadData()
}

1 个答案:

答案 0 :(得分:2)

如果您想将NSMutableArray转换为普通的NSArray,那么有很多来源如何做到这一点。在StackOverflow上,有许多问题要求相同,例如this rather active question。特定于Swift的代码可以在Apple's reference中找到。总而言之,您可以从另一个数组(例如NSMutableArray)初始化一个新的,不可变的数组,如下所示:

var nonMutableArray = mutableArray as AnyObject as [String]

Source

如果您正在寻找有关如何在UITableView中实现搜索的资源,请查看this之类的页面。