Отношения к одному моделируются базовыми данными как ссылки на объекты. Таким образом, отношение «один к одному» от сущности Bar
к сущности Baz
(при условии, что класс Baz
реализует Baz
) будет
@interface Bar : NSManagedObject {
}
@property (readwrite,nonatomic) Baz * toBaz;
@end
Отношения ко многим моделируются как изменяемое свойство набора (хотя не как NSMutableSet
). Предполагая отношение «ко-многим» от Bar
до Baz
, называемое manyBazz
:
@interface Bar : NSManagedObject {
}
@property (retain) NSSet* manyBazz;
@end
// coalesce these into one @interface AnalysisRecord (CoreDataGeneratedAccessors) section
@interface Bar (CoreDataGeneratedAccessors)
- (void)addManyBazzObject:(Baz *)value;
- (void)removeManyBazzObject:(Baz *)value;
- (void)addManyBazz:(NSSet *)value;
- (void)removeManyBazz:(NSSet *)value;
@end
Если вы хотите использовать интерфейс NSMutableSet для манипулирования отношением manyBazz
, вам следует вызвать -mutableSetValueForKey:@"manyBazz"
, чтобы получить KVO-совместимый прокси для отношения manyBazz
.
В Leopard (OS X 10.5) и более поздних версиях все подходящие методы автоматически генерируются во время выполнения платформой Core Data, даже если вы явно не объявляете или не реализуете их (вы, конечно, получите предупреждение компилятора если вы попытаетесь использовать их, не объявляя их в заголовочном файле). Таким образом, вам не нужно для подкласса
Самый простой способ получить правильную декларацию и реализацию - выбрать атрибуты в моделировщике данных и выбрать «Копировать объявления метода Objective C 2.0 в буфер обмена» из меню «Дизайн-> Модель данных», вставить в Реализация классов .h файла. Конечно, вы должны поддерживать синхронизацию .h и модели ... отсюда и сердечная рекомендация для удивительного MO Generator компании Rentzsch, инструмента, который будет автоматически генерировать (и заново генерировать) подклассы NSManagedObject из ваших данных. модель.