Hallo zusammen,
nachdem mir die englisch-sprachigen Boards irgendwie nicht weiterhelfen können oder ich es einfach nicht verstehe, versuch ich es mal hier.
Wie gesagt habe ich ein Problem mit CoreData. Zu allererst, ich habe meine App auf Basis des CoreDataBooks Beispiels von Apple gebaut.
Ich habe eine Liste von Hotelgästen (GuestInfo) die jeweils in einem Zimmer (RoomInfo) sind und gewisse Vorlieben (PreferenceInfo) haben. GuestInfo hat ein Attribute name und 2 Relationships zu RoomInfo und PreferenceInfo. Jeder Gast kann nur in einem Zimmer sein, allerdings können mehrere Gäste ein Zimmer belegen. Jeder Gast hat keine oder mehrere Vorlieben. Die RoomInfo und PreferenceInfo listen werden von einer anderen Instance bearbeitet.
So nun zum Problem. Wenn ich einen neuen Gast hinzufüge und NUR den Namen angebe, klappt alles. Auch wenn ich den Gast danach bearbeite und dann erst das Zimmer auswähle bzw die Vorlieben, klappt alles wie erwartet. Wenn ich allerding direkt beim hinzufügen Zimmer und Vorlieben eintragen will bekomme ich folgenden Fehler :
Illegal attempt to establish a relationship 'room' between objects in different contexts
Das ganze passiert bei folgender Zeile :
hier noch der Header damit alle wissen was was ist :
Und hier meine Methode wie ich das zum Hinzufügen vorbereite :
Alles anzeigen
Also, ich weis das es irgendein Problem mit dem Context gibt, denn wenn ich statt addingContext den _context benutze, geht zwar das eintragen, aber damit umgehe ich den seperaten Context und muss im Fall vom Abbruch des Nutzers das neu erstellte selber wieder löschen. --> Hier weis ich auch leider nicht wie ich das angehen soll.
Ich hoffe jemand hat eine Idee, denn daran verzweifel ich langsam.
Danke
nachdem mir die englisch-sprachigen Boards irgendwie nicht weiterhelfen können oder ich es einfach nicht verstehe, versuch ich es mal hier.
Wie gesagt habe ich ein Problem mit CoreData. Zu allererst, ich habe meine App auf Basis des CoreDataBooks Beispiels von Apple gebaut.
Ich habe eine Liste von Hotelgästen (GuestInfo) die jeweils in einem Zimmer (RoomInfo) sind und gewisse Vorlieben (PreferenceInfo) haben. GuestInfo hat ein Attribute name und 2 Relationships zu RoomInfo und PreferenceInfo. Jeder Gast kann nur in einem Zimmer sein, allerdings können mehrere Gäste ein Zimmer belegen. Jeder Gast hat keine oder mehrere Vorlieben. Die RoomInfo und PreferenceInfo listen werden von einer anderen Instance bearbeitet.
So nun zum Problem. Wenn ich einen neuen Gast hinzufüge und NUR den Namen angebe, klappt alles. Auch wenn ich den Gast danach bearbeite und dann erst das Zimmer auswähle bzw die Vorlieben, klappt alles wie erwartet. Wenn ich allerding direkt beim hinzufügen Zimmer und Vorlieben eintragen will bekomme ich folgenden Fehler :
Illegal attempt to establish a relationship 'room' between objects in different contexts
Das ganze passiert bei folgender Zeile :
hier noch der Header damit alle wissen was was ist :
Und hier meine Methode wie ich das zum Hinzufügen vorbereite :
Quellcode
- - (IBAction)addNewItem
- {
- AddViewController *addViewController = [[AddViewController alloc] initWithStyle:UITableViewStyleGrouped];
- addViewController.delegate = self;
- addViewController.context = _context;
- // Create a new managed object context for the new book -- set its persistent store coordinator to the same as that from the fetched results controller's context.
- NSManagedObjectContext *addingContext = [[NSManagedObjectContext alloc] init];
- self.addingManagedObjectContext = addingContext;
- [addingContext release];
- [addingManagedObjectContext setPersistentStoreCoordinator:[[_fetchedResultsController managedObjectContext] persistentStoreCoordinator]];
- GuestInfo *info = (GuestInfo *)[NSEntityDescription insertNewObjectForEntityForName:@"GuestInfo" inManagedObjectContext:addingContext];
- addViewController.info = info;
- UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:addViewController];
- [self.navigationController presentModalViewController:navController animated:YES];
- [addViewController release];
- [navController release];
- }
Also, ich weis das es irgendein Problem mit dem Context gibt, denn wenn ich statt addingContext den _context benutze, geht zwar das eintragen, aber damit umgehe ich den seperaten Context und muss im Fall vom Abbruch des Nutzers das neu erstellte selber wieder löschen. --> Hier weis ich auch leider nicht wie ich das angehen soll.
Ich hoffe jemand hat eine Idee, denn daran verzweifel ich langsam.
Danke