NSPredicate: сравнивать только часть строки?

#arrays #nspredicate

#массивы #nspredicate

Вопрос:

У меня есть массив имя_человека###имя_страны_:

 Bob###USA
Tim###UK
Sandy###German
  

У меня есть панель поиска пользовательского интерфейса, которая ищет имя пользователя (т.е. не учитывает страну), следующий NSPredicate ищет имя пользователя, а также страну, как мне его перестроить, чтобы он искал только имя пользователя?

 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF CONTAINS[cd] %@", __searchTerm];
NSArray *result = [self.source filteredArrayUsingPredicate:predicate];
  

массив person ###country создается каким-то сложным способом, поэтому не предлагайте мне создавать другой массив только с именами пользователей, кроме того, в разных странах могут быть разные люди с одинаковыми именами.

Большое спасибо!

Ответ №1:

Вы бы использовали BEGINSWITH вместо CONTAINS .

Но на самом деле: если две части данных разделены, почему вы сохраняете их в одной строке? Вы должны разделить их и создать новый класс с двумя свойствами: name и country . Это сделает все это намного проще.

Комментарии:

1. Спасибо, но BEGINSWITH не работает, если я ищу «ob», где должно быть возвращено «Bob ### USA», а BEGINSWITH не возвращает его.