Как использовать 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 3

2 ответа:

Из руководства разработчика iOS по запросам к массивам :

[query whereKey:@"participants" containsAllObjectsInArray:selectedParticipants];

Из того, что я могу сказать, кажется, что нет запроса, чтобы точно соответствовать массиву без дополнительных элементов, но вы можете добавить оператор, чтобы проверить количество элементов в массиве selectedParticipants против возвращенных участников. Если они равны, то это точное совпадение.

Можно создать облачную функцию , которая выполняет "широкий" запрос на содержимое массива, а затем отфильтровывает все дополнительные элементы перед возвращением результатов. Это такое же количество вызовов из приложения и в хранилище данных, но более эффективное, чем отправка посторонних данных обратно в приложение.