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

Sle*_*lee 43 core-data nspredicate ios

这是我目前的NSPredicate:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"UPC==%@ OR ItemID==%@", aUPCCode,aUPCCode];
Run Code Online (Sandbox Code Playgroud)

如何使这个案例不敏感?

而且我不想做任何部分匹配.

例如,如果他们为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]];
Run Code Online (Sandbox Code Playgroud)

Sin*_*ris 84

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

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"UPC ==[c] %@ OR ItemID ==[c] %@", aUPCCode,aUPCCode];
Run Code Online (Sandbox Code Playgroud)

编辑:

使用==[c]而不是==[cd]或你得到重音(abcd == àbcd).


Har*_*ngh 11

正如 Sinetris 所说,上述工作在 Objective-C 中。

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

更新 Swift 4.0/5.0

let predicateIsNumber = NSPredicate(format: "keywordContactNo contains[c] %@", example!) 
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你

谢谢