2013-04-11 1 views
13

comment annuler les modifications CoreData apportées à une instance de NSManagedObject lorsque la requête POST/PUT de cet objet échoue dans RKObjectManager?Comment annuler les modifications CoreData dans un objet lorsque RKObjectManager n'a pas réussi à publier l'objet

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 
} 

MISE À JOUR: RestKit 0,20

Répondre

38

Je ne sais rien RKObjectManager, mais pour annuler les modifications à l'instance NSManagedObject vous pourriez appeler:

[object.managedObjectContext refreshObject:object mergeChanges:NO]

Ceci annule tous change et transforme l'objet en défaut.

see here

+0

merci Dan, qui a travaillé! –

+0

très utile merci – Max

0

Swift solution:

import CoreData 

extension NSManagedObject { 
    func cancelChanges() { 
     managedObjectContext?.refresh(self, mergeChanges: false) 
    } 
} 

utilisant:

object.cancelChanges() 
Questions connexes