这是我当前的 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]];
这个答案来自 2011 年,如果您使用 Swift,请检查 Harjot Singh 的答案。
正如 Dave DeLong 所说,你可以使用:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"UPC ==[c] %@ OR ItemID ==[c] %@", aUPCCode,aUPCCode];
编辑:
使用
==[c]
而不是 ==[cd]
,否则你也会得到重音 (abcd == àbcd
)。
正如Sinetris所说,上述内容在Objective-C中有效。
它适用于不区分大小写。获取其中包含“example”字符串值的所有结果。
更新Swift 4.0/5.0
let predicateIsNumber = NSPredicate(format: "keywordContactNo contains[c] %@", example!)
希望有帮助
谢谢
也许是这个:
[NSPredicate predicateWithFormat:@"UPC MATCHES[cd] %@ OR ItemID MATCHES[cd] %@",aUPCCode,aUPCCode];