如果在 NSPredicate 中使用 OR,则无法成功过滤结果
Unable to filter results successfully if using OR inside NSPredicate
我有一个 NSArray & 我正在尝试根据下面提到的查询过滤结果:
self->filteredValues =
[self->AllValues filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF.sku contains[cd]%@",text]];
如果我单独使用 SELF.sku 或 SELF.name,我能够成功过滤结果。
问题是当我像这样在查询之间使用 OR 时,我得到了崩溃结果:
self->filteredValues =
[self->AllValues filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(SELF.sku contains[cd]%@) OR (SELF.name contains[cd]%@)",text]];
Error : 2018-06-05 12:39:55.137706+0530 AppName[43371:14206450] ***
Terminating app due to uncaught exception
'NSInvalidArgumentException', reason: 'Can't look for value
() in string (24" NOBLE WREATH (6));
value is not a string '
如何解决这个问题。
谓词中缺少第二个参数。
self->filteredValues =
[self->AllValues filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(SELF.sku contains[cd]%@) OR (SELF.name contains[cd]%@)",text, <#second argument#>]];
在谓词中设置<#second argument#>
。
检查谓词的格式字符串。您有两个 %@
占位符,但只有一个参数提供值。
我打赌这会解决问题:
[NSPredicate predicateWithFormat:@"(SELF.sku contains[cd]%@) OR (SELF.name contains[cd]%@)", text, text]
我有一个 NSArray & 我正在尝试根据下面提到的查询过滤结果:
self->filteredValues =
[self->AllValues filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF.sku contains[cd]%@",text]];
如果我单独使用 SELF.sku 或 SELF.name,我能够成功过滤结果。
问题是当我像这样在查询之间使用 OR 时,我得到了崩溃结果:
self->filteredValues =
[self->AllValues filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(SELF.sku contains[cd]%@) OR (SELF.name contains[cd]%@)",text]];
Error : 2018-06-05 12:39:55.137706+0530 AppName[43371:14206450] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Can't look for value () in string (24" NOBLE WREATH (6)); value is not a string '
如何解决这个问题。
谓词中缺少第二个参数。
self->filteredValues =
[self->AllValues filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(SELF.sku contains[cd]%@) OR (SELF.name contains[cd]%@)",text, <#second argument#>]];
在谓词中设置<#second argument#>
。
检查谓词的格式字符串。您有两个 %@
占位符,但只有一个参数提供值。
我打赌这会解决问题:
[NSPredicate predicateWithFormat:@"(SELF.sku contains[cd]%@) OR (SELF.name contains[cd]%@)", text, text]