NSPredicate与NSNumbers数组

时间:2013-01-06 20:16:21

标签: objective-c ios nspredicate nsnumber

我有一个NSNumber的数组,例如:10015,12313,10016

我想检查数组是否包含我在searchBar中输入的整数。

我的代码:

NSPredicate *resultPredicate = [NSPredicate 
    predicateWithFormat:@"SELF CONTAINS[c] %d", [searchText intValue]];


self.searchResults = [newArr filteredArrayUsingPredicate:resultPredicate];

2 个答案:

答案 0 :(得分:9)

如果您只需要数组是否包含它的布尔值,那么您需要。

self.searchResults = [newArr containsObject:@([searchText intValue])];

如果您确实想在结果中使用NSNumber的子集(在本例中为1),则包含将无效。必须像这样检查每个NSNumber的值的相等...

NSPredicate *resultPredicate = [NSPredicate 
    predicateWithFormat:@"SELF == %d", [searchText intValue]];

答案 1 :(得分:0)

如果您只想知道数字是否在数组中,则无需使用谓词:

BOOL occurs = [newArr containsObject:[NSNumber numberWithInt:[searchText intValue]]];

应该这样做。