Поиск атрибута NSSet в CoreData с помощью панели поиска - PullRequest
3 голосов
/ 14 октября 2011

У меня есть модель CoreData с объектом «бар», который имеет отношение «многие» «напитки» к сущности «напиток».

У напитка сущности есть только один атрибут с именем "name".

Теперь в моем приложении у меня есть tableView, который показывает все столбцы и содержит панель поиска.

В этом окне поиска я бы хотел иметь возможность поиска имени , местоположения и возможных напитков , доступных в баре.

Я уже ввел имя и местоположение следующим образом:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"
                                       name contains[cd] %@ OR
                       location.name_extern contains[cd] %@ OR 
                       location.name_intern contains[cd] %@", 
                            searchText, searchText, searchText];

Итак, теперь мой вопрос: как я могу найти атрибут имени в NSSet напитков?

EDIT:

Чтобы было понятнее, вот важные модели данных:

Bar

Attributes: 
name
location
drinks

Location

Attributes:
name_extern
name_intern

Drink:

Attributes:
name

У меня есть searchText, и мне нужно проверить следующие 4 места, соответствует ли оно чему-либо:

  1. имя (Бар)
  2. name_extern (Расположение бара)
  3. name_intern (Местоположения бара)
  4. название (из всех напитков бара)

1 Ответ

4 голосов
/ 14 октября 2011

Примерно так должно работать:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"
                                       name contains[cd] %@ OR
                       location.name_extern contains[cd] %@ OR 
                       location.name_intern contains[cd] %@ OR
                   ANY location.drinks.name contains[cd] %@", 
                            searchText, searchText, searchText, searchText];
...