1

在我的应用程序中,我NSPredicate用来过滤一个数组,其中填充了来自 iPhone 通讯录的数据。

对于数组中的每个人,我得到firstName、和lastName,然后根据搜索字符串过滤数组,emailnickName

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

我是 Predicates 的新手,无法弄清楚,我哪里出错了,我的代码在 'contains' 而不是 'beginswith' 下运行良好?

这是使我的应用程序崩溃的代码片段,

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

1 回答 1

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];
于 2012-08-13T09:56:05.187 回答