2012-10-15 1 views
1

내 응용 프로그램에서 기존 파일 형식에 대해 "Open In .."기능을 지원하고 싶습니다.동적 유형 식별자가 있지만 특정 확장자를 가진 파일을 지원하는 방법은 무엇입니까?

그러나이 파일 유형에는 UTI가 없습니다.

나는 다음과 같은 결과를 터미널에 대한 mdls을 실행 :

정보, 내 PLIST에 추가 점을 감안
kMDItemContentType    = "dyn.ah62d4rv4ge80c25t" 

kMDItemContentTypeTree   = (
    "public.data", 
    "public.item" 
) 

:

<key>CFBundleDocumentTypes</key> 
    <array> 
     <dict> 
      <key>CFBundleTypeExtensions</key> 
      <array> 
       <string>extension</string> 
      </array> 
      <key>LSHandlerRank</key> 
      <string>Alternate</string> 
      <key>CFBundleTypeRole</key> 
      <string>Viewer</string> 
      <key>LSItemContentTypes</key> 
      <array> 
       <string>public.data</string> 
       <string>public.item</string> 
      </array> 
     </dict> 
    </array> 

그러나,이 "는 무시 보인다 확장자 "로 설정하고 모든 데이터 파일에 대해"열기 "를 활성화합니다.

이것을 방지 할 수있는 방법이 있습니까?

+0

파일 확장명은 무엇입니까? – rmaddy

답변

1

Info.plist에서 UTI를 정의 할 수 있습니다. 이것이 자신의 작품을 확장 한 것이고 "수출 된 유형의 UTIs"에 넣는 것이라면 하나를 만듭니다. 알려진 유형의 파일이지만 UTI가 잘 알려지지 않은 경우 Info.plist의 "가져온 유형 UTI"섹션에 넣을 수 있습니다. 두 경우 모두 문서 유형 섹션에서이 UTI를 참조 할 수 있습니다.

+0

그게 효과가! 나는 "Imported Types"에서 UTI를 만들 수 있다는 것을 깨닫지 못했습니다. 완전한. 감사. – anna

+0

쿨; 더 자세한 정보를 원한다면 : 내 보낸 UTI의 예제 (Info.plist 파일의 키 'UTExportedTypeDeclarations')는 [here] (http://stackoverflow.com/a/4186585/45375)를 참조하십시오. 링크 된 게시물은 iOS 용이지만 OS X에도 똑같이 적용됩니다. – mklement0

+0

이 작업을 수행했으나 mdls는 실행 서비스 데이터베이스를 지우더라도 내 파일에 동적 유형 식별자가 있다고보고합니다. 제 [info.plist] (https://gist.github.com/amomchilov/64602f3c5bddd3196c1c76840692e951)입니다. 왜 시스템이 내 수출 uti을 집어 들고 있지 않은지? – Alexander