Frage

Ich versuche, eine einfache Tabellenansicht Editor für eine Core Data Einheit zu schreiben. Leider in Probleme, die ich renne.

Der Fehler tritt auf, wenn die erste Einheit auf den Tisch legen. Das Verfahren für die Erhebung des modalen Dialogs oben ist wie folgt:

NSManagedObjectContext *context = [fetchedResultsController managedObjectContext];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Group" inManagedObjectContext:context];
    insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];
NSManagedObject *newManagedObject = [[NSManagedObject alloc] initWithEntity:entity insertIntoManagedObjectContext:context];

NameEditController *dialog = [[NameEditController alloc] init];
dialog.managedObject = newManagedObject;
[newManagedObject release];

UINavigationController *navCtrlr = [[UINavigationController alloc] initWithRootViewController:dialog];
navCtrlr.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[[self navigationController] presentModalViewController: navCtrlr animated:YES];    
[navCtrlr release];

Innerhalb von NameEditController, ich habe dies nach der Fertig-Taste gedrückt wird:

NSString* name = self.nameLabel.text;
[self.managedObject setValue:name forKey:@"name"];

NSError *error = nil;
if (![managedObject.managedObjectContext save:&error]) {
    NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
}
UIViewController *ctrl = [self parentViewController];
[ctrl dismissModalViewControllerAnimated:YES];

Das allererste Mal, wenn ich ein Objekt erstellen (wenn die Liste leer ist) bekomme ich diese:

Ausnahme wurde während des Core Data Änderungsverarbeitung gefangen: [valueForUndefinedKey:]: die Einheit Gruppe Codierung-konform für den Schlüssel nicht Schlüsselwert „(null)“.

Wenn ich das ‚name‘ Feld ausfüllen, bevor Sie den Dialog zu bringen, ich bin in der Lage, die erste Einheit hinzuzufügen erfolgreich:

[newManagedObject setValue: @ "Neue Gruppe" forKey: @ "name"]; // dies funktioniert

Ich bin mit NSFetchedResultsController BTW der Tabellen-Ansicht zu verwalten.

Danke!

War es hilfreich?

Lösung 2

Yarr ... sorry Jungs, war es eigentlich in meiner didChangeObject:atIndexPath:forChangeType:newIndexPath: Funktion in aller Eile von anderswo kopiert. Offenbar eine hier geworfen Ausnahme kann im Innern der save: Methode verdeckt erhalten.

Andere Tipps

In Ihrem ersten Codeblock, erscheint die dritte Codezeile aus dem Zusammenhang gerissen zu sein. Nicht sicher, ob es dort etwas, das beitragen werden.

Zweitens ist die einfachste Möglichkeit, sich einen NSManagedObject in eine NSManagedObjectContext von einer Entität Namen zu erhalten, ist die [NSEntityDescription insertNewObjectForEntityName: inManagedObjectContext:] zu verwenden. Selektor

Also, ich würde so etwas wie:

NSManagedObjectContext *context = [fetchedResultsController managedObjectContext];
NSManagedObject *newObject = [NSEntityDescription insertNewObjectForEntityName:@"Group" inManagedObjectContext:context];

Sie werden newObject nicht mehr brauchen zu lösen, da die [NSEntityDescription insertNewObjectForEntityName: inManagedObjectContext:] Selektor ein Objekt mit einer Beibehaltungszähler von 0. Auch zurückkehren wird, stellen Sie sicher, dass Sie NameEditController als behielt seine Managed Eigenschaft Angabe <. / p>

Ihre eigentliche Problem zu adressieren, es klingt wie Sie vielleicht haben ‚name‘ als gewünschte Eigenschaft in Ihrem Datenmodell angegeben? Ein Screenshot die Details für ‚name‘ in Ihrem Datenmodell zeigt, würde helfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top