Swift2 Swift中字典的过滤数组
我有一个带字典的数组示例:Swift2 Swift中字典的过滤数组,swift2,nsmutablearray,uisearchbar,nspredicate,nsmutabledictionary,Swift2,Nsmutablearray,Uisearchbar,Nspredicate,Nsmutabledictionary,我有一个带字典的数组示例: ( { Email = "kate-bell@mac.com"; Name = "Kate Bell"; Number = "(555) 564-8583"; }, { Email = "d-higgins@mac.com"; Name = "Daniel Higgins"; Number = "555-478-7672";
(
{
Email = "kate-bell@mac.com";
Name = "Kate Bell";
Number = "(555) 564-8583";
},
{
Email = "d-higgins@mac.com";
Name = "Daniel Higgins";
Number = "555-478-7672";
}
)
我想根据键“Name”筛选这本字典
我总是从上面的swift代码中得到空数组。请帮我解决这个问题。谢谢我建议改用Swift的
过滤器
:
func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {
let filteredArray = arrContact.filter { $0["Name"] == searchText }
print(filteredArray)
if filteredArray.isEmpty {
searchActive = false
} else {
searchActive = true
}
tblData.reloadData()
}
正如@LeoDabus在评论中提到的,您甚至可以进一步简化:
func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {
let filteredArray = arrContact.filter { $0["Name"] == searchText }
print(filteredArray)
searchActive = !filteredArray.isEmpty
tblData.reloadData()
}
为swift 3试一试
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
// Put your key in predicate that is "Name"
let searchPredicate = NSPredicate(format: "Name CONTAINS[C] %@", searchText)
let array = (arrContact as NSArray).filtered(using: searchPredicate)
print ("array = \(array)")
if(array.count == 0){
searchActive = false;
} else {
searchActive = true;
}
self.aTable.reloadData()
}
其中“name”是密钥名
var namePredicate = NSPredicate(format: "Name like %@", String(searchText));
let searchPredicate = NSPredicate(format: "Name CONTAINS[C] %@", searchText)
arrrDict = self.arrrDict.filter { searchPredicate.evaluate(with: $0) };
you will get the result in dictionary specialy made to get contats from the phone book
Swift
从模型类获取项/数组的列表
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
if self.searchBarItems.text == "" {
self.arrFilter = self.arrayDictionarySubModel
} else {
self.arrFilter.removeAll()
let filteredArray = self.arrayDictionarySubModel.filter { ($0.itemTitle?.contains(self.searchBarItems.text ?? ""))!}
print("filtered array:- ", filteredArray[0].itemTitle!)
self.arrFilter = filteredArray
}
self.searchItemTableView.reloadData()
}
searchActive=!filteredaray.isEmpty
@Abhishek Rathore。请让我知道,如果你有任何问题,这是一个可怕的答案,即使我有相同的问题,但你的回答节省了我一天不在Swift 4工作。请更新或添加Swift 4
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
if self.searchBarItems.text == "" {
self.arrFilter = self.arrayDictionarySubModel
} else {
self.arrFilter.removeAll()
let filteredArray = self.arrayDictionarySubModel.filter { ($0.itemTitle?.contains(self.searchBarItems.text ?? ""))!}
print("filtered array:- ", filteredArray[0].itemTitle!)
self.arrFilter = filteredArray
}
self.searchItemTableView.reloadData()
}