首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >object和NSPredicate

object和NSPredicate
EN

Stack Overflow用户
提问于 2012-04-09 06:17:32
回答 2查看 1.5K关注 0票数 2

在我的应用程序中,我有一个包含大约12000个条目的大表。我正在将其显示在tableview上。但是在进行动态搜索时,搜索栏太慢了。我读到过NSPredicate方法比NSRange更持久。

这是我以前的代码:

代码语言:javascript
复制
[self.filteredListContent removeAllObjects];
listContent = [[NSArray alloc] initWithArray:[dbAccess getAllBooks]];

for (Book *book in listContent)
{

    NSRange range = [book.textBook rangeOfString:searchText options:NSCaseInsensitiveSearch];

    if (range.location != NSNotFound) 
    {
        [self.filteredListContent addObject:book];
    }
 }

我的新代码:

代码语言:javascript
复制
 [self.filteredListContent removeAllObjects];
 listContent = [[NSArray alloc] initWithArray:[dbAccess getAllBooks]];

 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF like[c] %@",searchText];

 [self.filteredListContent addObject:[listContent filteredArrayUsingPredicate:predicate]];

当我尝试执行这段代码时,我收到了这个错误:“无法在对象上执行正则表达式匹配。”

EN

Stack Overflow用户

发布于 2012-04-09 08:28:18

你的book类是一个字符串吗?如果没有,那么你就不能使用SELF like。您需要替换要比较的属性的名称。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10067014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档