Основные данные ко многим отношениям. Они ленивый груз? - PullRequest
6 голосов
/ 19 сентября 2009

У меня есть типичная модель в Базовых данных (для iPhone) с Отделами и Сотрудниками (Отдел - >> Сотрудник).

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

employee.deparmentId = department.departmentId

но я не смог (с графическим редактором Xcode).

Теперь, читая некоторые посты, я склонен определить отношение ко-многим для Отдела к Сотруднику (и наоборот) и использовать его.

Мой вопрос таков: отношения «ко-многим» ленивы загружаются? или он собирается загружать всех моих сотрудников в «базу данных» каждый раз, когда я создаю (извлекаю) список отделов?

Спасибо заранее Gonso

1 Ответ

15 голосов
/ 19 сентября 2009

Нет, объекты, связанные со связями to-many и to-one, загружаются по умолчанию лениво. Однако, если вам нужно получать доступ ко многим из них каждый раз, когда вы выбираете Отдел, то по соображениям производительности вы можете попросить Core Data загрузить их одновременно (это называется предварительной выборкой). Вы можете сделать это следующим образом:

[fetchRequest setReturnsObjectsAsFaults:NO];
[fetchRequest setRelationshipKeyPathsForPrefetching:[NSArray arrayWithObjects:@"employees", nil]];
...