gpt4 book ai didi

ios - 如何在 swift 3 中使用 NSPredicate 过滤数组

转载 作者:行者123 更新时间:2023-12-01 17:16:01 24 4
gpt4 key购买 nike

我有一个包含几个字典的数组。

{
DisplayName?:"Name of the employee"
Age:28
Department:"Dept 2"
}

我刚刚将我的 Objective-c 代码转换为 swift 并尝试像这样过滤。
let exists = NSPredicate(format: "DisplayName2 CONTAINS[cd] \(searchText!)")
let aList: Array<Any> = arrayDirectory.filter { exists.evaluate(with: $0) }
if(aList.count>0)
{
arrayDirectory=aList
facesCarousel.reloadData()
}

但我总是得到 aList计为 0。似乎没有过滤我的数组。我怎样才能写正确 NSPredicate在 swift 3 中并使用它过滤我的数组。

最佳答案

在 Swift 中制作这个过滤器不需要 NSPredicate一点也不。

let array = arrayDirectory.filter {
guard let name = $0["DisplayName"] as? String else {
return false
}
return name.contains(searchText)
}

这应该就是你所需要的。

编辑

更新以匹配您的字典。我想这就是你正在做的。

理想情况下,您不应该使用标准 Dictionary作为工作对象。将您的字典数组转换为结构数组。这样你就不需要字符串类型的代码或解包那些不是真正可选的属性。

使用 [Any] 的解决方法大批...

因为您已将数组定义为 [Any] (不要这样做)您需要先将对象转换为字典。
let array = arrayDirectory.filter {
guard let dictionary = $0 as? [String: Any],
let name = dictionary["DisplayName"] as? String else {
return false
}
return name.contains(searchText)
}

关于ios - 如何在 swift 3 中使用 NSPredicate 过滤数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45029770/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com