我正在使用NSPredicate使用UISearchBar搜索列表中的数字, 它适用于字符串但不适用于整数
我正在使用以下谓词
predicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"%@ contains[c] %d", @"number", [searchBar.text intValue]]];
[objectArray filterUsingPredicate:predicate];
[tableview reloadData];
例如,如果我输入1然后必须列出数组中的所有数据,我已经尝试过==如果尝试任何解决这个问题,它只适用于确切的数字吗?
现在,如果我使用此方法,则会出现错误“无法在集合中使用in / contains运算符”
答案 0 :(得分:16)
我认为这个谓词适合你:
predicate = [NSPredicate predicateWithFormat:@"self.number.stringValue CONTAINS %@",searchBar.text];
在考虑了这个之后,我不确定为什么self.number.stringValue可以正常工作,但是当我测试它时它就行了(self.number是一个int)。不知道为什么我可以将stringValue发送到int?
答案 1 :(得分:-1)
谓词可能很难处理,所以也许替代方案对你有用:
NSInteger index = 0;
while (index < objectArray.count)
{
NSString *currentString = [objectArray objectAtIndex:index];
if ([currentString rangeOfString:searchBar.text].length == 0)
{
[objectArray removeObjectAtIndex:index];
continue;
}
index++;
}
此处,数组中任何不包含searchBar文本的字符串都将被删除。