En este proyecto de prueba Core Data, tengo una relación de uno a muchos desde "Cliente" hasta "Productos" y esta relación se denomina 'productos'. El atributo del cliente es 'nombre' y el atributo del producto es 'artículo'. He subclases las entidades y Xcode ha producido la siguiente para el cliente:Cómo usar los métodos de acceso add & remove (NSSet) de Core Data?
@interface Customer : NSManagedObject
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSSet *products;
@end
@interface Customer (CoreDataGeneratedAccessors)
- (void)addProductsObject:(Products *)value;
- (void)removeProductsObject:(Products *)value;
- (void)addProducts:(NSSet *)values;
- (void)removeProducts:(NSSet *)values;
@end
Para agregar, digamos, un cliente (John Doe) y dos elementos (Widget 1 & Widget 2), puedo usar el descriptor de acceso método addProductsObject de la siguiente manera:
...
// Add (1) customer object
Customer *custObj = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];
[custObj setValue:@"John Doe" forKey:@"name"];
// Add (2) products for John Doe
for (int foo=0; foo<2; foo++) {
self.product = [NSEntityDescription insertNewObjectForEntityForName:@"Products" inManagedObjectContext:context];
NSString *objString = [NSString stringWithFormat:@"Widget %d", foo];
self.product.item = objString;
[custObj addProductsObject:self.product];
}
...
Esto funciona bien, pero, si es posible, me gustaría hacer uso de los addProducts ac Cessor.
Estoy asumiendo que el descriptor de acceso generado método addProducts está ahí para facilitar la inserción de un 'conjunto' de los objetos con algo como:
...
NSSet *itemSet = [[NSSet alloc] initWithObjects:@"Widget 1", @"Widget 2", nil];
[custObj addProducts:itemSet];
...
pero esto no funciona. En este intento, entiendo que un objeto del producto no se ha creado explícitamente y, como tal, no se ha realizado una asignación explícita del producto, pero pensé que tal vez el programa de acceso se ocupara de eso.
Lo que, por lo tanto, es el uso correcto de addProducts, y para el caso, removeProducts?
Gracias.