2012-05-25 4 views
3

내 NSManagedObjectContext에서 저장 작업을 실행 취소하고 싶습니다.NSManagedObjectContext : 저장 작업을 취소 하시겠습니까?

[[NSManagedObjectContext MR_contextForCurrentThread] setUndoManager:[NSUndoManager new]]; 
[[NSManagedObjectContext MR_contextForCurrentThread].undoManager beginUndoGrouping]; 
MyDataObject *mdo = [MyDataObject MR_createInContext:[NSManagedObjectContext MR_contextForCurrentThread]]; 
mdo.name = @"..."; 
[[NSManagedObjectContext MR_contextForCurrentThread] save:nil]; 
[[NSManagedObjectContext MR_contextForCurrentThread].undoManager endUndoGrouping]; 
[[NSManagedObjectContext MR_contextForCurrentThread].undoManager undo]; 

그러나 삽입이 취소되지 않습니다 : 나는 항상이 NSUndoManager가 무엇인지, 그러나 세이브 동작을 통해 실행 취소가 작동하지 않는 것처럼 보인다 ...

예, 생각했다. .. 이걸 얻을 수있는 방법이 없을까요? 거래처럼?

답변

4

자식 관리 개체 컨텍스트를 사용하여 저장 작업을 수행 할 수 있습니다 (부모 개체까지 밀어 넣지만 디스크의 파일은 건드리지 않음). 실행 취소하려면 부모 개체를 롤백하십시오. ?

나는 save을 호출하는 것이 마지막 저장 이후에 변경 한 모든 내용을 커밋하는 것과 같으며 rollback은 삭제하는 것과 같습니다. 변경 사항을 커밋하면 영구 저장소에 저장되며 롤백을 지원하기 위해 트랜잭션 로그를 유지하는 것도 없습니다.

거래가 진행되는 동안 save을 왜 원하는지 더 자세히 설명해 주실 수 있습니까?

관련 문제