2012-06-29 2 views
0

NSPersistentDocument 및 Core Data를 사용하여 응용 프로그램의 사용자 지정 파일 유형 (XML로 저장 됨)을 처리하는 OS X 응용 프로그램이 있습니다.업데이트 된 Core Data 모델이있는 앱에서 파일을 열면 변경됩니다.

코어 데이터 모델을 업데이트 할 때 간단한 모델을 업데이트 할 때 (가벼운 마이그레이션에 의지 함) 을 열면 새로운 모델을 사용하는 응용 프로그램의 파일이 디스크의 파일을 변경합니다. 원래 파일의 백업 버전도 디스크에 나타납니다 (파일 이름에 '~'가 붙음). 일단 이런 일이 발생하면 이전 (출시 된) 버전의 앱이 파일을 열 수 없습니다.

분명히 말하면 : 파일을 열면됩니다. 파일을 디스크에 다시 저장하지 않습니다. Finder에서 볼 수 있으며 파일을 열 자마자 '~'이 표시됩니다.

이것은 매우 위험한 행동입니다. 나는 매우 신중해야하며 은 사용자베이스에서 현재 사용중인 파일을 열지 않습니다. 그렇게하면 즉시 액세스 할 수 없기 때문입니다.

기본 OS X의 기본 동작입니까? 파일을 열면 내부적으로 앱으로 변경되지만 NSPersistentDocument 또는 Core Data 모델을 구성하여 명시 적으로 저장하지 않으면 변경 사항이 디스크로 다시 전파되지 않도록 할 수 있습니까?

답변

0

핵심 데이터는 새 프로그램으로 이전 파일을 여는 경우 마이그레이션을 진행해야한다고 가정합니다. 필자가 직접 경험 한 바에 따르면 파일을 열면 자동으로 마이그레이션되어 더 이상 이전 버전 프로그램에서 열 수없는 기본 동작입니다. 저는 그것이 새로운 저장소가 파일을 열어서 문서의 영구적 인 변경을 할 수 있도록 변경해야하는 해쉬 번호와 관련이 있다고 생각합니다. 그래서 아니, 나는 당신이 파일을 열 수 있다고 생각하지만, 변경 사항을 다시 디스크에 전파하지는 않는다. 아마도 마이그레이션을 시작하기 전에 복사본을 만들 수있는 방법을 재정의 할 수 있습니다.

도서관이 만들어진 임시 파일을 언급

애플의 개발자 : 마이그레이션은 파일 확장자 앞에 "~"접미사와 이주 된 상점으로 이름이 바뀌 storeURL 에서 성공적으로 기존의 저장소를 진행

경우 storeURL에 저장되었습니다.

http://developer.apple.com/library/mac/#documentation/cocoa/conceptual/CoreDataVersioning/Articles/vmInitiating.html#//apple_ref/doc/uid/TP40004399-CH7-SW1