2013-04-11 35 views
13

làm thế nào để loại bỏ CoreData thay đổi được thực hiện cho một thể hiện của NSManagedObject khi POST/PUT yêu cầu của đối tượng này không thành công trong RKObjectManager?Làm thế nào để loại bỏ CoreData thay đổi trong một đối tượng khi RKObjectManager không gửi đối tượng

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 
} 

CẬP NHẬT: RestKit 0,20

Trả lời

38

Tôi không biết gì về RKObjectManager, nhưng để loại bỏ những thay đổi để NSManagedObject dụ bạn có thể gọi:

[object.managedObjectContext refreshObject:object mergeChanges:NO]

Điều này sẽ loại bỏ tất cả thay đổi và biến đối tượng thành lỗi.

see here

+0

cảm ơn bạn Dan, mà làm việc! –

+0

cảm ơn rất hữu ích – Max

0

Swift giải pháp:

import CoreData 

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

Sử dụng:

object.cancelChanges() 
Các vấn đề liên quan