我有一个正确使用NSPredicate来过滤数组并将结果过滤后的数组显示给用户的应用。
这是我的NSPredicate代码:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(Name CONTAINS[cd] %@) OR (Acronym CONTAINS[cd] %@) OR (departments.Name CONTAINS[cd] %@)",searchBar.text,searchBar.text,searchBar.text];
当用户尝试按departments.Name
属性进行搜索时,会出现问题。我相信问题是我搜索数组的方式(ListData)。格式化数组的方式是:
ListData数组包含多个带有键的对象:名称,缩写和部门(还包含带键的对象:名称)。我想使用NSPredicate搜索ListData.Name,ListData.Acronym和AND ListData.departments.Name。
注意:对象可以包含一系列0-10个部门。不确定这是否会导致任何问题,但我想提供尽可能多的相关信息。
如何格式化NSPredicate predicateWithFormat:
以搜索所有三个变量?
谢谢!
答案 0 :(得分:2)
如果departments
是一个对象数组,那么您可以在谓词中使用ANY
:
... OR (ANY departments.Name CONTAINS[cd] %@)