我想使用键值对 NSMUtableArray
进行搜索,以捕获洞对象,而不仅仅是值数组,例如我的 NSMUtableArray
返回我
{id : 1, name : x1}
{id : 2, name : x2}
{id : 3, name : x3}
{id : 4, name : y1}
{id : 5, name : y2}
如果我正在搜索 x 我的代码返回我
{x1,x2,x3}
或者我希望它返回
{id : 1, name : x1}
{id : 2, name : x2}
{id : 3, name : x3}
我的代码是:
let arrayy = lstResults.value(forKey: "name")
let searchTest = NSPredicate(format: "SELF BEGINSWITH [c] %@", searchBar.text!)
let array = (arrayy as! NSArray).filtered(using: searchTest)
filteredTableDataName = array as NSArray
请帮助我尝试了很多东西,但没有任何效果。
最佳答案
您可以直接过滤数组,使用相应的键路径而不是谓词中的“SELF”,而不是提取和过滤“name”
值:
let array = NSArray(array: [
["id": 1, "name": "x1"], ["id": 2, "name": "x2"], ["id": 3, "name": "y3"]])
let predicate = NSPredicate(format: "name BEGINSWITH [c] %@", "x")
let filtered = array.filtered(using: predicate)
print(filtered)
结果:
[{
id = 1;
name = x1;
}, {
id = 2;
name = x2;
}]
另一种选择是将 NS(Mutable)Array
转换为 Swift 字典数组,并使用 filter()
函数:
if let a = array as? [[String: Any]] {
let filtered = a.filter {
($0["name"] as? String)?
.range(of: "x", options: [.caseInsensitive, .anchored]) != nil
}
print(filtered)
// [["id": 1, "name": x1], ["name": x2, "id": 2]]
}
关于swift - 在 NSMutableArray 中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58318682/