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.
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. –
Edité mi respuesta para incluir algunos códigos básicos. –
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? –