Как использовать PFQuery для запроса точного соответствия массиву?
У меня есть класс Game
в синтаксическом анализе, и один из атрибутов - participants
, который представляет собой массив NSStrings
имен пользователей. Моя цель состоит в том, чтобы выполнить запрос PFQuery на основе NSArray имени пользователя (называемого selectedParticipants
), так что игровой объект возвращается, если есть точное совпадение найденных имен пользователей participants
.
Однако, когда я использую
[queryForGames whereKey:@"participants" equalTo:selectedParticipants];
Я получаю ошибку, что я не могу сделать запрос сравнения на основе массивов (Cannot do a comparison query for type: __NSArrayM
). Я также попробовал несколько других типов запросов, перечисленных в синтаксическом анализе Ссылка руководство, такие как использование whereKey:containsAllObjectsInArray:
, но они будут возвращать посторонние Game
объекты, которые содержат имена пользователей дополнение к тем, в equalTo:selectedParticipants
. Есть ли способ, где я мог бы запросить точное совпадение массивов с помощью PFQuery?
Спасибо!
2 ответа:
Из руководства разработчика iOS по запросам к массивам :
[query whereKey:@"participants" containsAllObjectsInArray:selectedParticipants];
Из того, что я могу сказать, кажется, что нет запроса, чтобы точно соответствовать массиву без дополнительных элементов, но вы можете добавить оператор, чтобы проверить количество элементов в массиве
selectedParticipants
против возвращенных участников. Если они равны, то это точное совпадение.
Можно создать облачную функцию , которая выполняет "широкий" запрос на содержимое массива, а затем отфильтровывает все дополнительные элементы перед возвращением результатов. Это такое же количество вызовов из приложения и в хранилище данных, но более эффективное, чем отправка посторонних данных обратно в приложение.