2012-07-26 3 views
3

패키지 형식의 문서가 있습니다. 즉 실제로 폴더이지만, NSFileWrapper을 사용하고 com.apple.package을 준수하여 이메일로 공유하고 싶은 파일로 나타납니다. 내가 MFMailComposeViewController을 만들었고 addAttachmentData:mimeType:fileName:의 첫 번째 매개 변수에 무엇을 제공해야할지 고민 중입니다.패키지 유형 문서를 메일 첨부 파일로 보내려면 어떻게해야합니까?

패키지에는 이미지 파일과 plist가 포함되어 있지만 나중에 변경 될 수 있습니다.

패키지를 데이터로 변환하는 방법은 무엇입니까? 그렇게하는 것이 올바른 방법일까요?

+0

나는 이것을위한 해결책에도 관심이있다. – MrMage

답변

2

당신이 말했듯이 패키지는 실제로 폴더입니다. 그것은 OSX 운영 체제에서만 패키지로 해석됩니다.

이와 같이 메일 프로토콜은이를 패키지/단일 파일로 해석 할 수 없으며 표준 폴더 만 볼 수 있습니다.

이메일로 보낼 수있는 유일한 방법은 파일을 하나의 파일로 압축하는 것입니다. 패키지의 ZIP 아카이브 또는 tar.gz 파일을 작성하여이를 수행 할 수 있습니다.

코코아의 코드에서 ZIP 파일을 만드는 방법은 여러 가지가 있습니다. libz 라이브러리와 C 코드를 직접 사용하거나 ZipArchive 또는 기타와 같은 제 3 자 라이브러리 (이미 제네릭 코드가 있으므로 코코아 메소드를 사용하여 쉽게 수행 할 수 있습니다)를 사용할 수 있습니다.

1

내 파일이 크지 않기 때문에 ZIP이 잔인하며 제 3 자 코드 사용을 피하려고합니다. 그래서 하나의 전자 메일 첨부 파일에 여러 파일을 첨부하는 다른 접근법을 생각해 냈습니다.

먼저 첨부 파일에 원하는 모든 파일이 들어있는 NSFileWrapper 객체가 있습니다. 핵심은 NSFileWrapper의 serializedRepresentation 메서드를 사용하여 전자 메일 첨부에 사용할 NSData 객체를 가져 오는 것입니다. mimeType에 'application/octet-stream'을 사용하고 있습니다. 첨부 파일을 여는 방법으로 돌아 가면 NSFileWrapper의 initWithSerializedRepresentation : 메서드를 사용하여 원본 NSFileWrapper를 다시 가져옵니다.

첨부 파일은 내 응용 프로그램에서만 사용하고 열 수 있기 때문에이 기능은 저에게 효과적입니다. App 외부의 첨부 파일로 무언가를해야하는 경우에는 분명히 작동하지 않습니다. 이 경우, ZIP은 논리적 인 선택처럼 보입니다.