Search code examples
iosobjective-ccore-datarestkit

How to discard CoreData changes in one object when RKObjectManager failed to post object


how to discard CoreData changes made to an instance of NSManagedObject when POST/PUT request of this object fails in RKObjectManager?

NSManagedObject *object = ...;
[object setValue:@"test" forKey: @"test"];
[[RKObjectManager sharedManager] postObject:object 
                                 parameters:nil 
                                    success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) { NSLog(@"success, nothing to do"); }
                                    failure:^(RKObjectRequestOperation *operation, NSError *error) { 
  // I want to discard changes made to object here 
}

UPDATE: RestKit 0.20


Solution

  • I know nothing about RKObjectManager, but in order to discard changes to NSManagedObject instance you could call:

    [object.managedObjectContext refreshObject:object mergeChanges:NO]

    This will discard all changes and turn the object into fault.

    see here