Подтвердить что ты не робот

Как отказаться от изменений CoreData в одном объекте, когда RKObjectManager не смог отправить объект

как отказаться от изменений CoreData, внесенных в экземпляр NSManagedObject, когда запрос POST/PUT этого объекта не работает в 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 
}

ОБНОВЛЕНИЕ: RestKit 0.20

4b9b3361

Ответ 1

Я ничего не знаю о RKObjectManager, но чтобы отменить изменения в экземпляре NSManagedObject, вы можете вызвать:

[object.managedObjectContext refreshObject:object mergeChanges:NO]

Это приведет к отмене всех изменений и превращению объекта в неисправность.

см. здесь

Ответ 2

Решение Swift:

import CoreData

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

Использование:

object.cancelChanges()