Abh*_*k R 4 nsmutablearray uisearchbar nsmutabledictionary nspredicate swift2
我有一个带字典的数组示例:
(
{
Email = "kate-bell@mac.com";
Name = "Kate Bell";
Number = "(555) 564-8583";
},
{
Email = "d-higgins@mac.com";
Name = "Daniel Higgins";
Number = "555-478-7672";
}
)
Run Code Online (Sandbox Code Playgroud)
我想根据密钥"名称"过滤这个字典
func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {
let predicate = NSPredicate(format:"Name == %@", searchText)
let filteredArray = (arrContact as NSMutableArray).filteredArrayUsingPredicate(predicate)
print(filteredArray)
if(filteredArray.count == 0){
searchActive = false;
} else {
searchActive = true;
}
tblData.reloadData()
}
Run Code Online (Sandbox Code Playgroud)
我总是从上面的swift代码得到空数组.请帮我解决这个问题.谢谢
我建议使用Swift filter代替:
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()
}
Run Code Online (Sandbox Code Playgroud)
正如@LeoDabus在评论中所提到的,你甚至可以进一步简化:
func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {
let filteredArray = arrContact.filter { $0["Name"] == searchText }
print(filteredArray)
searchActive = !filteredArray.isEmpty
tblData.reloadData()
}
Run Code Online (Sandbox Code Playgroud)
试试这个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()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11459 次 |
| 最近记录: |