我正在使用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()
}
答案 0 :(得分:2)
如果您想将NSMutableArray转换为普通的NSArray,那么有很多来源如何做到这一点。在StackOverflow上,有许多问题要求相同,例如this rather active question。特定于Swift的代码可以在Apple's reference中找到。总而言之,您可以从另一个数组(例如NSMutableArray)初始化一个新的,不可变的数组,如下所示:
var nonMutableArray = mutableArray as AnyObject as [String]
如果您正在寻找有关如何在UITableView中实现搜索的资源,请查看this之类的页面。