NSFetchedResultsController и связь

На этот раз я получаю странное поведение с NSFetchedResultsController. Я создаю fetchRequest следующим образом:

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entdesc = [NSEntityDescription entityForName:@"Exam" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entdesc];
NSPredicate *predi = [NSPredicate predicateWithFormat:@"student == %@", self.student];
[fetchRequest setPredicate:predi];

Если я выполню его с executeFetchRequest:error: из NSManagedObjectContext, я получу ожидаемый результат. Все экзамены по мнению студента. (Между студентом и экзаменом существует отношение «один ко многим»). Но если я использую тот же fetchRequest в NSFetchedResultsController, я получаю что-то другое. До сих пор я не получил, что я точно получаю. В моих глазах результат случайный.

Можешь мне помочь? Я хочу управлять экзаменами данного студента с помощью NSFetchedResultsController.

Сандро Мейер


person Sandro Meier    schedule 23.07.2011    source источник
comment
[NSPredicate predicateWithFormat:@"student == %@", self.exam]. Здесь self.exam студент?   -  person albertamg    schedule 23.07.2011
comment
Простите мою ошибку. Конечно, это должен быть студент. ;-)   -  person Sandro Meier    schedule 24.07.2011


Ответы (1)


Если у вас уже есть объект Student, вам не нужно извлекать объекты Exam, вы просто запрашиваете у объекта Student содержимое его отношения exams. Нет необходимости выполнять выборку, потому что у вас уже есть ссылки на все Exam объекты, которые вы хотите.

Что касается того, почему выборка работает вне контроллера результатов выборки, я не могу с уверенностью сказать. Контроллер ничего не делает, кроме как берет результаты выборки и упаковывает их для отображения в табличном представлении. Если данные не отображаются должным образом в табличном представлении, проблема, скорее всего, заключается в методах делегата/источника данных табличного представления, где вы подключаете содержимое извлеченного контроллера результатов к табличному представлению.

person TechZen    schedule 23.07.2011
comment
Спасибо за ответ. Я тоже думал об этом. Но NSFetchedResultsController делает всю обработку за меня. Если я не найду другого решения, я сделаю это таким образом. ;-) - person Sandro Meier; 24.07.2011
comment
Да вот такая же проблема. Очень удобно иметь fetchcontroller для создания всех разделов для вашей таблицы. Какова лучшая практика здесь? - person Obiwahn; 01.11.2012