Agregar relaciones en NSManagedObjectModel a NSEntityDescription creado mediante programación

Cuando escribes una biblioteca estática que usa CoreData, hay un gran desorden que incluye un archivo .xdatamodeld normal en el proyecto porque simplemente no puedes vincular su versión compilada (.momd) en tu binario, por lo que es mejor crear el conjuntoNSManagedObjectModel en el código así:

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];

Y todo es simplemente perfecto ...

¡Pero! Espera, si tengo más de una entidad en miNSManagedObjectModel y están relacionados (para-muchos, invertidos, etc.), ¿cómo en el mundo los conectaré en el código, como en el ejemplo anterior, sin ese bonito editor de Xcode, donde se relacionan con varios clics del mouse?

Ejemplo

Imagínese, tenemos una clase MyCustomElement, que es casi la misma que en MyCustomEntry del código anterior. Ahora, aquí están sus interfaces cómo aparecerían si usara la generación de Xcode para entidades:

@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

¿Qué NSRelationshipDescription necesito crear para ellos y cómo iniciarlo?

Respuestas a la pregunta(1)

Su respuesta a la pregunta