我有3个核心数据实体。MenuItems
,Items
,ItemLangs
。
所有实体都具有iItemId
属性。用户需要使用sItemName
进行搜索,可以在ItemLangs
中找到该代码。
UITableView包含MenuItems
数组。
我试过filteredArrayUsingPredicate,但是我的谓词不正确。在过滤数组之前,是否需要先遍历MenuItems
数组?
这是我的谓词:
NSPredicate * resultPredicate = [NSPredicate
predicateWithFormat:@“sItemName LIKE%@”,searchText];
我可以知道如何使用它来过滤我拥有的MenuItems数组吗?
谢谢!
最佳答案
您需要的是这样的谓词:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"sItemName CONTAINS[cd] %@", searchText];
[cd]
代表不区分大小写。或者,如果您喜欢“LIKE”,请参考this answer。
更新:
您还应该查看要获取的数据项-sItemName。通过调试器,检查数据源数组返回什么对象?我指的是您要将上述谓词应用于的数组。通向sItemName可能涉及一些关键路径层次结构,在这种情况下,您需要使用点表示法,例如
Items.ItemLangs.sItemName
。