CoreData - 1:n Relationen

Maximilian2010

Neues Mitglied
Thread Starter
Mitglied seit
07.09.2010
Beiträge
38
Hallo zusammen,
ich habe mir bei Coredata stark reduziert folgendes zusammengebastelt:
entityA
- Atribut ID
- Atribut NameA
- Reation entityB 1:2

entityB
- Atribut NameB

Habe mir dann ein managedObject objectA der entityA erstellt und kann damit auch alles mögliche machen und die Daten sind nach einem AppNeustart auch noch da.
Bei den Relationen habe ich es so versucht:
Code:
NSManagedObjectContext *context = self.managedObjectContext;
NSManagedObject *newObjectB;
NSMutableSet *mySet = [[[NSMutableSet alloc] init] autorelease];

//NSSet anlegen falls keins vorhanden
if( [objectA valueForKey:@"entityB"] == nil ){
        [objectA setValue:mySet forKey:@"entityB"];
        NSError *error = nil;
        if (![context save:&error]) {
            NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
            abort();
        }
    }
mySet = [objectA valueForKey:@"entityB"];
newObjectB = [NSEntityDescription
                         insertNewObjectForEntityForName:@"entityB"
                         inManagedObjectContext:context];
[newObjectB setValue:@"Max" forKey:@"NameB"];
[mySet setByAddingObject:newObjectB];
[objectA setValue:mySet forKey:@"entityB"];
NSLog(@"***%i", [[objectA valueForKey:@"entityB"] count]);
error = nil;
if (![context save:&error]) {
    NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
    abort();
}
Das ganze läuft zwar Fehlerfrei, aber egal wie oft ich die Funktion aufrufe, das NSSet hat immer 0Elemente... was mache ich da falsch?
Vielen Dank
Max
 

conbrio

Mitglied
Mitglied seit
21.04.2010
Beiträge
94
Ich gestehe, ich bin kein CoreData-Experte, aber so wie ich das sehe, liegt der Fehler nicht bei CoreData, sondern hier:
Code:
[mySet setByAddingObject:newObjectB];
modifiziert nicht mySet, sondern gibt ein neues NSSet mit dem zusätzlichen Eintrag zurück, das Du aber nirgends speicherst; nimm doch stattdessen
Code:
addObject:
 

Maximilian2010

Neues Mitglied
Thread Starter
Mitglied seit
07.09.2010
Beiträge
38
Ja, danke... das war mein Fehler :) Das war ja mal einfach...
Vielen Dank
Max
 

conbrio

Mitglied
Mitglied seit
21.04.2010
Beiträge
94
Nix zu danken, diese "kleinen Fehler" sind ja oft die hartnäckigsten...;)
 
Oben