NSPredicate使用Contains比较整数

时间:2012-08-19 03:54:01

标签: iphone objective-c nspredicate

我正在使用NSPredicate使用UISearchBar搜索列表中的数字, 它适用于字符串但不适用于整数

我正在使用以下谓词

predicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"%@ contains[c]  %d", @"number", [searchBar.text intValue]]];
[objectArray filterUsingPredicate:predicate];
[tableview reloadData];

例如,如果我输入1然后必须列出数组中的所有数据,我已经尝试过==如果尝试任何解决这个问题,它只适用于确切的数字吗?

现在,如果我使用此方法,则会出现错误“无法在集合中使用in / contains运算符”

2 个答案:

答案 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文本的字符串都将被删除。