Добавление отношений в NSManagedObjectModel к программно созданному NSEntityDescription

Когда вы пишете статическую библиотеку, которая использует CoreData там 'Это большой беспорядок, включающий в проект обычный файл .xdatamodeld, потому что вы просто не можете просто связать его скомпилированную версию (.momd) с вашим двоичным файлом, поэтомулучше создать целоеNSManagedObjectModel в коде так:

NSAttributeDescription *dateAttribute = NSAttributeDescription.new;

dateAttribute.name = @"timestamp";
dateAttribute.attributeType = NSDoubleAttributeType;
dateAttribute.optional = NO;
dateAttribute.indexed = YES;

NSAttributeDescription *payloadAttribute = NSAttributeDescription.new;

payloadAttribute.name = @"payload";
payloadAttribute.attributeType = NSBinaryDataAttributeType;
payloadAttribute.optional = NO;
payloadAttribute.indexed = NO;

NSEntityDescription *entry = NSEntityDescription.new;

entry.name = entry.managedObjectClassName = NSStringFromClass(MyCustomEntry.class);
entry.properties = @[dateAttribute, payloadAttribute];

NSManagedObjectModel *mom = NSManagedObjectModel.new;

mom.entities = @[entry];

И все просто идеально ....

Но! Подождите, если у меня есть более чем один объект в моемNSManagedObjectModel и они связаны (со многими, инвертированными и т. д.), как в мире я собираю их соединить в коде, как в примере выше, без того приятного редактора Xcode, где вы создаете отношения несколькими щелчками мыши?

пример

Представьте себе, у нас есть класс MyCustomElement, который почти такой же, как в MyCustomEntry из приведенного выше кода. Теперь здесьих интерфейсы, как они выглядели бы, если бы я использовал генерацию Xcode для сущностей:

@interface MyCustomEntry : NSManagedObject

@property (nonatomic, retain) NSNumber *timestamp;
@property (nonatomic, retain) NSData *payload;
@property (nonatomic, retain) MyCustomElement *element;

@end

@interface MyCustomElement : NSManagedObject

@property (nonatomic, retain) NSNumber * timestamp;
@property (nonatomic, retain) NSString * identifier;
@property (nonatomic, retain) NSSet *entries;

@end

@interface MyCustomElement (CoreDataGeneratedAccessors)

- (void)addEntriesObject:(MyCustomEntry *)value;
- (void)removeEntriesObject:(MyCustomEntry *)value;
- (void)addEntries:(NSSet *)values;
- (void)removeEntries:(NSSet *)values;

@end

Какое NSRelationshipDescription мне нужно создать для них и как его инициировать?

Ответы на вопрос(1)

Ваш ответ на вопрос