2013-04-11 22 views
13

, bu nesnenin POST/PUT isteği RKObjectManager'da başarısız olduğunda, bir CoreManManagerObject örneğine yapılan CoreData değişikliklerinin nasıl atılacağını nasıl silebilir?RKObjectManager nesneyi gönderemediğinde bir nesnedeki CoreData değişiklikleri nasıl iptal edilir?

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 
} 

GÜNCELLEME: RestKit 0.20

cevap

38

ben bir şey hakkında RKObjectManager biliyorum ama NSManagedObject örneğine değişiklikleri atmak için size diyebiliriz:

[object.managedObjectContext refreshObject:object mergeChanges:NO]

Bu, tüm silecek nesneyi değiştirir ve arızayı açar.

see here

+0

size Dan teşekkür, o çalıştı! –

+0

çok yararlı teşekkürler – Max

0

Swift çözüm:

import CoreData 

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

kullanma:

object.cancelChanges() 
İlgili konular