不区分大小写的NSPredicate在CoreData中具有单个结果

时间:2011-09-25 15:29:57

标签: ios core-data nspredicate

这是我目前的NSPredicate:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"UPC==%@ OR ItemID==%@", aUPCCode,aUPCCode];

如何使此案例不敏感?

我不想做任何部分匹配。

示例如果他们为aUPCCode输入123我不想获得123,123a,123b,123c等。我只想要完全匹配。

我考虑过这样做,但似乎有点荒谬:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"UPC==%@ OR ItemID==%@ OR UPC==%@ OR ItemID==%@ OR UPC==%@ OR ItemID==%@", aUPCCode,aUPCCode,[ aUPCCode lowercaseString] ,[aUPCCode lowercaseString], [aUPCCode uppercaseString],[aUPCCode uppercaseString]];

3 个答案:

答案 0 :(得分:81)

正如Dave DeLong所说,你可以使用:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"UPC ==[c] %@ OR ItemID ==[c] %@", aUPCCode,aUPCCode];

修改

使用==[c]代替==[cd],或者您也获得重音(abcd == àbcd)。

答案 1 :(得分:2)

正如Sinetris所说,上述内容适用于Objective-C。

它适用于不区分大小写的情况。获取其中包含“example”字符串值的所有结果。

更新Swift 4.0

let predicateIsNumber = NSPredicate(format: "keywordContactNo contains[c] %@", example!) 

希望有所帮助

由于

答案 2 :(得分:0)

也许这个:

[NSPredicate predicateWithFormat:@"UPC MATCHES[cd] %@ OR ItemID MATCHES[cd] %@",aUPCCode,aUPCCode];