使用NSPredicate过滤NSArray始终为null

时间:2014-08-18 11:39:54

标签: ios objective-c nspredicate

我有以下核心数据实体:

enter image description here

现在我有所有POI实体的NSArray。

我希望使用谓词过滤该数组,以便它搜索每个属性,看它是否包含用户搜索的内容。

例如: 数组对象0: 地址=测试 details = Test1 ..

数组对象1: 地址= Ba 细节= Ba1 ..

并且用户搜索'e',我想得到一个只有对象0的nsarray。

我试过这样:

NSPredicate *resultPredicate = [NSPredicate
                                predicateWithFormat:@"SELF contains[cd] %@",
                                searchText];

 searchResults = [_dataArray filteredArrayUsingPredicate:resultPredicate];

但这总是没有回报。

有人可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:3)

请尝试这样做;

[NSPredicate predicateWithFormat:@"SELF.propertyName contains[cd] %@", searchText];

答案 1 :(得分:0)

由于_dataArray包含POI个实体并搜索address属性,因此请将谓词更改为

NSPredicate *resultPredicate = [NSPredicate
                                predicateWithFormat:@"address contains[cd] %@",
                                searchText];

 searchResults = [_dataArray filteredArrayUsingPredicate:resultPredicate];

答案 2 :(得分:0)

试试这个

NSPredicate *resultPredicate = [NSPredicate
                            predicateWithFormat:@"SELF contains[cd] \'%@\'",
                            searchText];

searchResults = [_dataArray filteredArrayUsingPredicate:resultPredicate];