1

我有一个应用程序可以正确使用 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 和 ListData.departments.Name。

注意:一个对象可以包含 0-10 个部门。不确定这是否会导致任何问题,但我想提供尽可能多的相关信息。

我将如何格式化NSPredicate predicateWithFormat:以搜索所有三个变量?

谢谢!

4

1 回答 1

2

如果departments是一个对象数组,那么您可以ANY在谓词中使用:

 ... OR (ANY departments.Name CONTAINS[cd] %@)
于 2013-07-30T19:07:59.777 回答