Deshaga / revertir cambios locales a PFObject

Supongamos que tengo un object PFO que estoy editando. En una etapa posterior, deseo cancelar los cambios que he hecho al PFObject. ¿Cómo vuelvo a la copy original de PFObject?

Lo que he intentado

if (self.request.isDirty) { // self.request is a PFObject // Reload object NSLog(@"%@", self.request.requestTitle); // Logs ABC, Original was DEF [self.request refreshInBackgroundWithBlock:^(PFObject *object, NSError *error) { if (!error) { NSLog(@"%@", self.request.requestTitle); // Logs ABC [self.requestDetailsTableView reloadData]; } }]; } 

Traté de search el object también, pero el mismo resultado

  if (self.request.isDirty) { // self.request is a PFObject // Reload object NSLog(@"%@", self.request.requestTitle); // Logs ABC, Original was DEF [self.request fetchInBackgroundWithBlock:^(PFObject *object, NSError *error) { if (!error) { NSLog(@"%@", self.request.requestTitle); // Logs ABC [self.requestDetailsTableView reloadData]; } }]; } 

Ahora hay un método de PFObject en PFObject que restablecerá su object al estado del server siempre que no haya llamado save: http://parseplatform.org/Parse-SDK-iOS-OSX/api/Classes/PFObject. html # / c: objc (cs) PFObject (im) revert

Por ejemplo, uso un controller de vista empujada con un formulario para editar properties en mi subclass PFObject y tengo dos botones para Cancelar y Guardar …

 @IBAction override func cancelAction() { self.myObject?.revert() self.navigationController?.popViewControllerAnimated(true) } @IBAction override func saveAction() { self.myObject?.saveInBackgroundWithBlock({ (succeeded: Bool, error: NSError?) -> Void in if (succeeded) { self.navigationController?.popViewControllerAnimated(true) } else { // Show error } }) } 

Actualmente no hay una forma de hacer esto directamente: necesitas hacer un pequeño trabajo de pies con tus llamadas 🙂

Prueba esto:

 if (self.request.isDirty) { // self.request is a PFObject // Reload object NSLog(@"%@", self.request.requestTitle); // Logs ABC, Original was DEF PFQuery *newRequest = [PFQuery queryWithClassName:@"YourClassName"]; //Add your request parameters here... [newRequest getFirstObjectInBackgroundWithBlock:^(PFObject *object, NSError *error) { if (!error) self.request = object; NSLog(@"%@", self.request.requestTitle); // Should log DEF [self.requestDetailsTableView reloadData]; } }]; }