9

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

我正在使用以下谓词

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

例如,如果我键入 1,那么必须列出数组中的所有元素,我已经尝试过 == 如果尝试任何解决方法,它只适用于确切的数字?

现在,如果我使用此方法“不能在集合中使用 in/contains 运算符”,我会收到错误消息

4

2 回答 2

17

我认为这个谓词应该适合你:

predicate = [NSPredicate predicateWithFormat:@"self.number.stringValue CONTAINS %@",searchBar.text];

考虑到这一点,我不确定为什么 self.number.stringValue 有效,但是当我测试它时它确实有效(self.number 是一个 int)。不知道为什么我可以将 stringValue 发送到 int?

于 2012-08-19T04:34:48.940 回答
-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 文本的任何字符串都将被删除。

于 2012-08-19T04:26:07.703 回答