PFQueryTableViewController с использованием объектов в массиве PFObject

Извините, если это чрезвычайно простой и глупый вопрос. Я все еще новичок в разборе.

Предположим, у меня есть объект Schedule, а объект Schedule может иметь несколько объектов ScheduleItem (не много). Я решил смоделировать это, используя массивы для отношений, такие как:

PFObject *first = ...
PFObject *second = ...
PFObject *third = ...

PFObject *schedule = [PFObject objectWithClassName:@Schedule"];
schedule[@"scheduleItems"] = @[first, second, third];

Предположим, я хочу позже запросить эти ScheduleItems, которые принадлежат этому расписанию, и использовать его в PFQueryTableViewController. Я не могу просто запросить это расписание и получить доступ к его элементам через массив, потому что PFQueryTableViewController использует результаты PFQuery в качестве источника данных для табличного представления. И я не уверен, как запросить "объекты ScheduleItem, которые живут в массиве" scheduleItems "в конкретном объекте Schedule". Я вижу метод запроса whereKey:containedIn:, но это не совсем похоже, потому что у меня нет ссылки на этот массив, прежде чем я сделаю запрос. Похоже, мне нужно сделать какой-то вложенный / составной запрос, потому что для части этого запроса мне нужно запросить объект Schedule, но я не уверен, как именно это работает.

РЕДАКТИРОВАТЬ: чтобы уточнить этот вопрос. Предположим, объект "Расписание" имеет имя "Сегодня". Я знаю, что могу создать запрос для этого объекта Schedule и сказать ему включить поле "scheduleItems":

PFQuery *query = [PFQuery queryWithClassName:@"Schedule"];
[query whereKey:@"name" equalTo:@"Today"];    // or query by its objectId
[query includeKey:@"scheduleItems"];

Я знаю, что если я выполню этот запрос с чем-то вроде findObjectsInBackgroundWithBlock:результат прямого запроса - это массив из одного объекта, объекта Schedule, со всеми элементами ScheduleItems, доступными через поле scheduleItems.

Моя проблема в том, что я не хочу выполнять этот запрос сам - я хочу использовать эти ScheduleItems в качестве ячеек в PFQueryTableViewController, который предполагает взаимно-однозначное сопоставление между ячейками и объектами результата прямого запроса. Если я использую приведенный выше запрос с PFQueryTableViewController, результатом прямого запроса является массив из одного объекта, то есть таблица имеет только один объект. Короче говоря, я не знаю, как сказать PFQueryTableViewController выполнить запрос, но затем использовать связанный с ним массив объектов для заполнения таблицы.

1 ответ

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

[query includeKey:@"scheduleItems"];

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

Помните, что количество объектов в массиве должно быть небольшим, чтобы избежать проблем с производительностью и размером.

Другие вопросы по тегам