我的对象Dog具有变量
name:字符串, 年龄:整数
我有5只狗在[狗]
我想断定搜索栏中的dog.name包含输入值
下面的代码失败,错误提示“没有键名”
let searchPredicate = NSPredicate(format: "SELF Any.name CONTAINS[c] %@", text)
let array = (data as NSArray).filtered(using: searchPredicate)
let productSearchResults = array
答案 0 :(得分:0)
@Larme在评论中已经提到,您应该考虑使用Swifts Array.filter()
。
但是,如果出于某些原因想要或必须使用NSPredicate
,也可以这样做。请注意,谓词用于测试数组中的每个元素。因此,必须针对元素给出谓词中使用的keyPath。
let searchPredicate = NSPredicate(format: "name CONTAINS[c] %@", text)
答案 1 :(得分:0)
您不需要NSPredicate,可以直接在数组上使用过滤器
let productSearchResults = array.filter { $0.name.contains(text) }
但是,如果您真的想使用NSPredicate,请尝试:
NSPredicate(format: "ANY name contains[c] %@", text)
答案 2 :(得分:0)
尝试使用filter
函数
let filterArray = dogArray.filter { $0.name.lowercased().contains(searchText.lowercased()) }