Я перевожу существующую модель данных, которая ранее хранилась в XML, в Core Data, поэтому я стараюсь как можно точнее изучать веревки. Базовые данные - это, очевидно, одна из тех технологий, которая никуда не денется в ближайшее время, поэтому я мог бы также «изучить ее правильно».
Возьмем, к примеру, модель базовых данных с двумя сущностями:
- лицо
- Питание
Человек имеет 2 отношения один-ко-многим с Еда :
- любимые продукты (1 ко многим)
- ненавистные продукты (1 ко многим)
(Person и Food также являются подклассами NSManagedObject.)
В предыдущей модели данных Person поддерживал две NSArray
переменные экземпляра. Если бы я хотел любимые блюда, я мог бы позвонить:
Person *fred = [[Person alloc] init];
NSArray *fredsFavorites = fred.favoriteFoods;
Легкое сжатие.
Я читаю документацию для Core Data, и я не могу найти правильный способ получить этот NSArray с учетом NSFetchRequest
, потому что Я не могу определить, какую связь я хочу получить объекты из.
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Food" inManagedObjectContext:[fred managedObjectContext]]];
[request setIncludesSubentities:NO];
NSArray *fredsFavoriteAndHatedFoods = [[fred managedObjectContext] executeFetchRequest:request error:nil];
Возвращает все элементы Food , хранящиеся в favoriteFoods
и hatedFoods
. Как я могу разделить это? Конечно, есть простое объяснение, но в настоящее время я недостаточно хорошо понимаю концепцию, чтобы объяснить ее на языке жаргонных данных, поэтому мой поиск в Google бесплоден.