不区分大小写的 NSPredicate,CoreData 中只有一个结果

问题描述 投票:0回答:3

这是我当前的 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]];
ios core-data nspredicate
3个回答
102
投票

这个答案来自 2011 年,如果您使用 Swift,请检查 Harjot Singh 的答案

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

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

编辑

使用

==[c]
而不是
==[cd]
,否则你也会得到重音 (
abcd == àbcd
)。


21
投票

正如Sinetris所说,上述内容在Objective-C中有效。

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

更新Swift 4.0/5.0

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

希望有帮助

谢谢


0
投票

也许是这个:

[NSPredicate predicateWithFormat:@"UPC MATCHES[cd] %@ OR ItemID MATCHES[cd] %@",aUPCCode,aUPCCode];
© www.soinside.com 2019 - 2024. All rights reserved.