2013-04-11 9 views
13

jak odrzucić zmiany wprowadzone w instancji obiektu NSManagedObject, gdy żądanie POST/PUT tego obiektu zakończy się niepowodzeniem w RKObjectManager?Jak odrzucić zmiany CoreData w jednym obiekcie, gdy RKObjectManager nie mógł opublikować obiektu

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

Odpowiedz

38

ja nic o RKObjectManager wiedzieć, ale aby odrzucić zmiany do instancji NSManagedObject można nazwać:

[object.managedObjectContext refreshObject:object mergeChanges:NO]

To spowoduje odrzucenie wszystkich zmienia i przekształca obiekt w błąd.

see here

+0

dziękuję Dan, który pracował! –

+0

bardzo przydatne dzięki – Max

0

Swift rozwiązanie:

import CoreData 

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

Zastosowanie:

object.cancelChanges() 
Powiązane problemy