In diesem Test Core Data-Projekt habe ich eine Eins-zu-viele-Beziehung von "Kunde" zu "Produkte" und diese Beziehung heißt "Produkte". Das Attribut des Kunden ist "Name" und das Attribut des Produkts ist "Element". Ich habe die Entitäten subclassed und Xcode hat folgende für den Kunden produziert:Wie Verwenden von Core-Daten hinzufügen und entfernen (NSSet) Accessor-Methoden?
@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
hinzuzufügen, sagen wir mal, ein Kunde (John Doe) und zwei Elemente (Widget 1 & Widget 2), kann ich die Accessor verwenden Verfahren addProductsObject wie folgt:
...
// 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];
}
...
Dies funktioniert aber, wenn möglich, ich Nutzung der addProducts ac machen möchten Abgeordnete.
Ich gehe davon aus, dass das Verfahren erzeugt Accessor addProducts ist die Einfügung eines ‚Set‘ von Objekten mit so etwas wie zu erleichtern:
...
NSSet *itemSet = [[NSSet alloc] initWithObjects:@"Widget 1", @"Widget 2", nil];
[custObj addProducts:itemSet];
...
aber dieser scheitert. Bei diesem Versuch verstehe ich, dass ein Produktobjekt nicht explizit erstellt wurde und somit keine explizite Produktzuordnung stattgefunden hat, aber ich dachte, der Accessor würde sich darum kümmern. daher
Was ist die korrekte Verwendung von addProducts, und was das betrifft, removeProducts?
Danke.