2015-06-28 2 views
1

У меня есть объект Parse с именем Recipes и столбец ingredients, который представляет собой массив. Я хочу запросить список объектов и получить рецепт на основе некоторых ингредиентов, которые я выбираю.Элемент parse, содержащий элементы массива

Если я использую сообщение whereKey:containsAllObjectsInArray: в объекте запроса, я получу рецепты с большим количеством ингредиентов. Кроме того, whereKey:containedIn: не решает мою проблему. Восстановленные объекты должны иметь набор ингредиентов, содержащих все мои выбранные ингредиенты или только некоторые из них. У него никогда не должно быть больше ингредиентов, чем те, которые я выбрал.

Любые идеи?

+0

Это не имеет смысла с логической точки зрения ... почему вы должны указать ВСЕ ингредиенты, чтобы получить рецепт? – luk2302

+0

Я хочу получить рецепты, которые я могу сделать, используя некоторые ингредиенты (доступные в моем доме в этот момент). Я не хочу получать рецепты, требующие больше ингредиентов, чем в настоящее время. –

+0

Не можете ли вы просто получить все результаты для этого набора ингредиентов, а затем использовать некоторую логику для фильтрации тех, у кого есть дополнительные ингредиенты в вашем приложении? – Kex

ответ

1

Вы можете добавить дополнительный столбец в свою таблицу рецептов «количество массивов» для количества ингредиентов в рецепте. Затем сделать несколько запросов:

[query whereKey:ingredients containsAllObjectsInArray:ingredientsArray]; 
[query whereKey: arrayCount equalTo:[ingredientsArray count]]; 

Таким образом, вы только возвращение вещей с тем же количеством ингредиентов и все те, которые вы перечислили.

+0

Спасибо! Это решило мою проблему. –

+0

Отлично, да, разбор имеет некоторые странные ограничения. Обычно это означает, что вам нужно найти способ изменить модель данных немного. Рад, что смог помочь! – Kex

1

Вы можете возможно сделать - whereKey:notContainedIn: для всех остальных ingredients (ингредиентов этого пользователя не есть). и пользователь получит только ingredients у него есть.

+0

Это было бы подходящим обходным решением, но я бы не хотел посылать по сети все ингредиенты (поскольку их много, и я не хочу, чтобы мое приложение использовало интернет-данные напрасно). –

Смежные вопросы