Нечувствительный к регистру NSPredicate с единственным результатом в CoreData
Вот мой текущий NSPredicate:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"UPC==%@ OR ItemID==%@", aUPCCode,aUPCCode];
Как я могу сделать этот регистр нечувствительным?
И я не хочу делать частичное совпадение.
Пример, если они вводят 123 для aUPCCode, я не хочу получать 123, 123a, 123b, 123c, ect. Я хотел бы получить точное соответствие.
Я думал об этом, но кажется немного смешным:
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]];
Ответы
Ответ 1
Как сказал Дейв ДеЛонг, вы можете использовать:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"UPC ==[c] %@ OR ItemID ==[c] %@", aUPCCode,aUPCCode];
Edit
Используйте ==[c]
вместо ==[cd]
или вы также получаете акценты (abcd == àbcd
).
Ответ 2
возможно это:
[NSPredicate predicateWithFormat:@"UPC MATCHES[cd] %@ OR ItemID MATCHES[cd] %@",aUPCCode,aUPCCode];
Ответ 3
Как сказал Синетрис, это работает в Objective-C.
Он работает без учета регистра. Выбирает все результаты, которые имеют в нем "примерное" строковое значение.
Обновить Swift 4.0
let predicateIsNumber = NSPredicate(format: "keywordContactNo contains[c] %@", example!)
Надеюсь, что это поможет
Спасибо