2010-11-27 15 views
16

Estoy jugando con un nuevo proyecto, una aplicación de iPad de vista dividida usando Core Data, y me preguntaba, ya que es bastante claro cómo agregar y eliminar un elemento. Si tuviera que decir alternar esto para mantener el texto, entonces ese texto se mostrará en un UITextView, ¿cómo puedo editar o sobrescribir un objeto en CoreData?CoreData Edit/Overwrite Object

El usuario escribe su nota en el UITextView y cuando salen, edita y guarda la nota (objeto en la vista de tabla) que han seleccionado actualmente.

Gracias por agradecer cualquier ayuda.

Respuesta

33

Simplemente Solicitar al objeto existente usando un NSFetchRequest, cualquiera que sea el cambio es necesario actualizar campos (un simple colocador myObject.propertyName es todo lo que se requiere), y luego realice una acción Guardar en el contexto de datos.

EDIT para agregar el ejemplo de código. Estoy de acuerdo con MCannon, definitivamente vale la pena leer los datos centrales.

Este código asume que creó el proyecto con una plantilla que incluye material de Core Data, de modo que el delegado de la aplicación tiene un contexto de objeto administrado, etc. Tenga en cuenta que aquí NO hay ningún error de comprobación.

Obtención del objeto

// Retrieve the context 
if (managedObjectContext == nil) { 
    managedObjectContext = [(YourAppNameAppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext]; 
} 

// Retrieve the entity from the local store -- much like a table in a database 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"YourEntityName" inManagedObjectContext:managedObjectContext]; 
NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
[request setEntity:entity]; 

// Set the predicate -- much like a WHERE statement in a SQL database 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"YourIdentifyingObjectProperty == %@", yourIdentifyingQualifier]; 
[request setPredicate:predicate]; 

// Set the sorting -- mandatory, even if you're fetching a single record/object 
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"yourIdentifyingQualifier" ascending:YES]; 
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; 
[request setSortDescriptors:sortDescriptors]; 
[sortDescriptors release]; sortDescriptors = nil; 
[sortDescriptor release]; sortDescriptor = nil; 

// Request the data -- NOTE, this assumes only one match, that 
// yourIdentifyingQualifier is unique. It just grabs the first object in the array. 
YourEntityName *thisYourEntityName = [[managedObjectContext executeFetchRequest:request error:&error] objectAtIndex:0]; 
[request release]; request = nil; 

actualizar el objeto de

thisYourEntityName.ExampleNSStringAttributeName = @"The new value"; 
thisYourEntityName.ExampleNSDateAttributeName = [NSDate date]; 

Guardar el cambio

NSError *error; 
[self.managedObjectContext save:&error]; 

Ahora su objeto/fila se actualiza.

+0

Bien, ¿podría indicarme o hacer una pequeña muestra del código, por favor? Lo siento, soy bastante nuevo en CoreData y tener una muestra realmente me ayudaría a comprenderlo. –

+1

Edité mi respuesta para incluir algunos códigos básicos. –

+0

Estoy leyendo, gracias por la ayuda. Sin embargo, un par de cosas: la solicitud de búsqueda, ¿reemplaza el pre hecho - '(NSFetchedResultsController *) fetchedResultsController'? También el 'YourEntityName * thisYourEntityName' me confunde, ¿el nombre real de la entidad? Acabo de recibir errores. Y la actualización y guardar fragmentos, se quedan con el código de búsqueda ¿no? –

4

http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CoreData/Articles/cdFetching.html le mostrará cómo a buscar una entidad,

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdUsingMOs.html le mostrará cómo cambiar las propiedades, y guardarlos.

datos básicos es algo en lo que realmente desea leer mucha documentación de la manzana y familiarizarse, le ahorrará horas en el largo plazo. ¡espero que esto ayude!

+0

no encontrada. – UnderDog

Cuestiones relacionadas