2011-04-23 3 views
0

이 질문은 핵심 데이터 실행 취소 관리자를 사용하는 방법에 대한 저의 부족함과 편집이 완료되기 전에 NSManagedObject를 상태로 복원하는 방법에 대해 설명합니다.하나의 가져온 엔티티를 많은 코어 데이터로 복원합니다. 코어 데이터

저는 핵심 데이터를 배우는 중입니다. 동적 접근자를 사용하여 NSManagedObject 클래스를 설정했습니다. 여러 NSManagedObject 엔터티 결과를 반환하는 반입을 수행합니다. 이러한 엔티티 결과 (이름, 성) 각각의 내용이 테이블보기에 저장되고 사용자가 자세한보기 및 편집을 위해 테이블에서 하나를 선택합니다.

세부보기 컨트롤러는 선택한 NSManagedObject 엔터티에 대한 포인터를받습니다. 사용자가 필드를 편집하면 NSManagedObject 엔터티의 해당 속성 값이 업데이트됩니다. 이것은 이러한 변화를 관리하는 가장 깨끗한 방법처럼 보였습니다.

이제 save를 사용하여 변경 내용을 커밋하는 대신 해당 엔티티의 데이터베이스에있는 내용으로 롤백하는 취소 편집 기능을 제공하려고합니다. 난 정말 하나의 엔티티를 복원하고 전체 refetch를 수행하지 않으려합니다.

롤백을 시도하고 NSUndoManager (beginUndoGrouping 및 endUndoGrouping)를 시도했지만 작동하지 않습니다. 나는 롤백이 실제로 해야하는 것을 이해하지 못한다고 생각합니다.

그러나 어떤 경우에도 필자는 세부적인보기 컨트롤러가 뷰를 다시 채울 수 있도록 (즉, 필요한 개체 만 가져 오는 게으른 방법을 사용하여) 해당 단일 엔터티의 속성 값을 복원하려고합니다. 정확한 정보와 함께 지금은 취소 된 편집 된 값을 포함하는 NSManagedObject 엔티티 값을 사용하고 있습니다.

NSManagedObject 복사본을 만들어 편집 프로세스를 시작할 수 있다고 가정합니다. 취소 편집 버튼을 누르면 원본으로 다시 복사 할 수 있습니다. (포인터를 움직이면 복사본으로 원본을 대체 할 수도 있지만 포인터가 실제로 여러 개체를 통과 했으므로 복사본의 보유 번호를 관리하는 방법을 잘 모르겠습니다.)

다른 제안 사항이 있습니까?

감사합니다 당신이 원하는 내가 그렇지 않은 모르겠어요 무엇을 달성해야 rollback를 사용

답변

0

. 아마 구현 세부 오류입니다.

컨텍스트의 updatedObjects을 호출하여 업데이트되었지만 아직 저장되지 않은 특정 관리 대상 개체를 찾을 수 있습니다.