Подтвердить что ты не робот

Нечувствительный к регистру 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]];
4b9b3361

Ответ 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!) 

Надеюсь, что это поможет

Спасибо