NSPredicate - 返回不精确的匹配

时间:2015-10-30 18:53:23

标签: ios objective-c nspredicate

在我的应用程序中,我允许用户使用文本字段关键字搜索按品牌/型号搜索车辆。这是我的谓词:

if (self.keywordSearch.text.length > 0) {

     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"fields.make CONTAINS[cd] %@ OR fields.model CONTAINS[cd] %@", self.keywordSearch.text, self.keywordSearch.text];            
     self.vehicleArray = [[self.vehicleArray filteredArrayUsingPredicate:predicate] mutableCopy];
}

问题在于,如果车辆制造/型号是福特F-150'并且用户搜索F150或F 150,车辆不包括在结果中。它只会在搜索F-150或f-150时返回。

有没有办法确保这些不准确的匹配正在返回?

1 个答案:

答案 0 :(得分:0)

我建议使用正则表达式。您可以在NSPredicate格式中使用正则表达式文字(在此处描述:https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Predicates/Articles/pUsing.html),也可以手动迭代数组并使用NSRegularExpression来比较字符串。