在创建谓词时获取SIGABRT

时间:2012-08-13 09:48:10

标签: objective-c ios

在我的应用程序中,我使用NSPredicate来过滤填充了来自iPhone的地址簿的数据的数组。

对于数组中的每个人,我得到firstNamelastNameemailnickName, 然后我根据搜索字符串

过滤数组

我为searchString创建了一个谓词,但由于某些原因,我无法弄明白,我的应用程序崩溃了。

我是Predicates的新手并且无法弄清楚,我哪里出错了,我的代码与'contains'而不是'beginwith'一起正常工作?

以下是崩溃我的应用的代码段

NSPredicate *filterPredicate = [NSPredicate predicateWithFormat:
                                            @"(firstName beginswith[cd] %@) OR (lastName beginswith[cd] %@) OR (nickName beginswith[cd] %@) OR (email beginswith[cd] %@)",
                                            searchTextComponent,searchTextComponent,searchTextComponent];

1 个答案:

答案 0 :(得分:0)

您有4个“%@”且只有3个参数。

NSPredicate *filterPredicate = [NSPredicate predicateWithFormat:
                                            @"(firstName beginswith[cd] %@) OR (lastName beginswith[cd] %@) OR (nickName beginswith[cd] %@) OR (email beginswith[cd] %@)",
                                            searchTextComponent,searchTextComponent,searchTextComponent, SEARCHTEXTCOMPONENT ONE MORE TIME];