NSDocument
을 다른 형식의 다른 NSDocument
으로 한 형식으로 내보내려면 어떻게해야합니까?Mac 응용 프로그램에서 NSDocument 내보내기
문서 기반 앱에서 내보내기 옵션을 구현하고 싶습니다. 형식 변환 코드를 어디에 두어야하는지, 그리고 이미 Cocoa에서 제공하는 것은 무엇인지 모르겠습니다.
NSDocument
을 다른 형식의 다른 NSDocument
으로 한 형식으로 내보내려면 어떻게해야합니까?Mac 응용 프로그램에서 NSDocument 내보내기
문서 기반 앱에서 내보내기 옵션을 구현하고 싶습니다. 형식 변환 코드를 어디에 두어야하는지, 그리고 이미 Cocoa에서 제공하는 것은 무엇인지 모르겠습니다.
모든 쓰기 옵션 NSDocument
은 쓸 문자열 유형을 지정하는 문자열 매개 변수를 가져옵니다. 그러므로 dataOfType:error:
또는 fileWrapperOfType:error:
개의 메소드에서 지원하려는 각 파일 유형의 변환 코드를 구현해야합니다.
내보내기 조작을 시작하려면 saveToURL:ofType:forSaveOperation:completionHandler:
메소드를 원하는 유형으로 사용하고 저장 조작을 NSSaveToOperation
으로 사용할 수 있습니다.
문서 데이터로드 및 저장을 지원하기 위해 재정의 할 수있는 방법에 대한 자세한 내용은 this programming guide을 참조하십시오.
클래스 메서드 writableTypes
또는 인스턴스 메서드 writableTypesForSaveOperation:
에서 사용 가능한 형식을 다시 NSSaveToOperation
으로 가져올 수 있습니다.
지원하려는 파일 형식을 Info.plist 파일에 선언해야합니다.
NSDocument 하위 클래스가 적절한 자동 저장을 지원하고 모든 쓰기 가능한 유형도 읽을 수있는 경우 (필 요한대로) 사용자가 "복제본"을 사용해야하는 이미 제공된 유형 변환 워크 플로를 사용하는 것이 좋습니다 "저장".
사용자는이 워크 플로에서 문서를 "복제"하면 제목이없는 문서로 임시 파일 (자동 저장 파일이 저장된 위치)에 쓰거나 복사됩니다. 사용자가 문서 창을 닫으면 앱에서 문서를 저장하거나 삭제할 것을 제안합니다. 문서에는 영구 URL이 없으므로 사용자가 문서 유형을 선택할 수 있도록 액세서리 뷰가있는 NSSavePanel이 나타납니다.
이 솔루션에서는 모든 것이 이미 Cocoa에 의해 제공되므로 사용자는 "복제"와 "저장"을 사용할 수 있으므로 특별한 "내보내기"기능을 지원할 필요가 없습니다. typeName
인수에 따라 dataOfType:error:
또는 fileWrapperOfType:error:
의 모든 쓰기 가능 유형에만 문서를 저장할 수 있어야합니다 (Sven의 말처럼).
이점은 사용자가 파일을 닫을 때만 (그리고 삭제하지 않기로 선택) URL을 선택해야한다는 것과 "다른 이름으로 저장"작업이있는 문서 기반 응용 프로그램의 새 워크 플로와 호환된다는 점입니다 "중복"다음에 "저장"으로 대체되었습니다.
쓰기 불가능한 문서의 문서를 복제 할 수 있는지 확인해야합니다 (이 경우 writeSafelyToURL:ofType:forSaveOperation:error:
대신 원본 파일을 복사하여 인쇄 할 수 있습니다).
각 유형에 대해 다른 하위 클래스를 갖는 것이 좋지 않다는 뜻입니까? – hpique
정확합니다. NSDocument 클래스는 디스크상의 파일 형식과 관계없이 특정 종류의 문서 (텍스트 문서, 그림, ...)를 나타내야합니다. – Sven
설명서 (제공된 동일한 링크)에는 "여러 문서 유형이 여러 NSDocument 하위 클래스 사용"이라는 섹션이 있습니다. 여기에서 NSDocument 서브 클래스 당 하나의 유형 만 지원해야합니다. – hpique