Domanda

Sto cercando di scrivere un editor di visualizzazione della tabella semplice per un'entità Core Data. Purtroppo sto correndo in problemi.

L'errore si verifica quando si aggiunge il primo soggetto al tavolo. Il processo per portare la finestra di dialogo modale è il seguente:

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];

All'interno di NameEditController, ho questo dopo che il pulsante viene premuto Fatto:

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];

La prima volta che creo un oggetto (quando la lista è vuota) ottengo questo:

Eccezione è stato catturato durante la lavorazione cambiamento Core Data: [valueForUndefinedKey:]: il Gruppo entità non è il valore della chiave di codifica-compliant per la chiave "(null)".

Se compilo il campo 'nome' prima di portare la finestra di dialogo, sono in grado di aggiungere la prima entità con successo:

[newManagedObject setValue: @ Forkey "Nuovo Gruppo": @ "nome"]; // questo funziona

Sto usando NSFetchedResultsController per gestire la visualizzazione della tabella BTW.

Grazie!

È stato utile?

Soluzione 2

Yarr ... scusate ragazzi, era in realtà nella mia funzione didChangeObject:atIndexPath:forChangeType:newIndexPath: frettolosamente copiato da altrove. A quanto pare un'eccezione gettato qui può ottenere oscurato all'interno del metodo save:.

Altri suggerimenti

Nel primo blocco di codice, la terza riga di codice sembra essere fuori contesto. Non so se c'è qualcosa che potrebbe essere contribuendo.

In secondo luogo, il modo più semplice per ottenere anche tu una NSManagedObject in un NSManagedObjectContext da un nome di entità è quello di usare il [NSEntityDescription insertNewObjectForEntityName: inManagedObjectContext:]. Selettore

Quindi, mi piacerebbe fare qualcosa di simile:

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

Non avrete bisogno di rilasciare più newObject, dal momento che il [NSEntityDescription insertNewObjectForEntityName: inManagedObjectContext:] selettore restituirà un oggetto con un conteggio di conservare 0. Inoltre, assicurarsi di avere NameEditController specificando la sua proprietà managedObject come mantenuto <. / p>

Per risolvere il problema attuale, suona come forse hai 'nome' specificato come una proprietà obbligatoria nel vostro modello di dati? Uno screenshot che mostra i dettagli per il 'nome' nel vostro modello di dati sarebbe di aiuto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top