2011-06-14 4 views
0

나는 사용자 정의 파일 형식의 문서 기반 응용 프로그램을 가지고는 요로 감염과 같은 그렇게 설정 :"com.apple"UTI는

<key>CFBundleDocumentTypes</key> 
<array> 
    <dict> 
     <key>CFBundleTypeExtensions</key> 
     <array> 
      <string>extension</string> 
     </array> 
     <key>CFBundleTypeIconFile</key> 
     <string>Icon</string> 
     <key>CFBundleTypeName</key> 
     <string>Custom Document</string> 
     <key>CFBundleTypeRole</key> 
     <string>Editor</string> 
     <key>LSHandlerRank</key> 
     <string>Default</string> 
     <key>NSDocumentClass</key> 
     <string>MyDocument</string> 
    </dict> 
</array> 

<key>UTExportedTypeDeclarations</key> 
<array> 
    <dict> 
     <key>UTTypeConformsTo</key> 
     <array> 
      <string>public.data</string> 
     </array> 
     <key>UTTypeDescription</key> 
     <string>Custom Document</string> 
     <key>UTTypeIconFile</key> 
     <string>Icon</string> 
     <key>UTTypeIdentifier</key> 
     <string>com.mycompany.appname</string> 
     <key>UTTypeReferenceURL</key> 
     <string></string> 
     <key>UTTypeTagSpecification</key> 
     <dict> 
      <key>com.apple.ostype</key> 
      <string>XXXX</string> 
      <key>public.filename-extension</key> 
      <array> 
       <string>extension</string> 
      </array> 
     </dict> 
    </dict> 
</array> 
<key>UTImportedTypeDeclarations</key> 
<array/> 

어떤 (나는에 따라, 가정 무엇 나는 그것을 읽었다) 올바른 방법이다. 내가 저장된 파일에 대한 mdls을 실행할 때 UTI는 다음과 같이 나열되어, 제외 :

kMDItemContentType    = "com.apple.appname.document" 

예, 같은 텍스트 편집기, iSpend 및 스케치 애플 리케이션의 말 그대로 속성 목록에서 항목을 복사하여 붙여 넣은 것처럼이, 혼란 , 모두 아무 소용이 없습니다.

올바른 UTI를 사용하는 사용자 지정 QuickLook 생성기가 필요하기 때문에 저장된 문서의 UTI가 정확해야합니다.

도움을 주시면 대단히 감사하겠습니다. 미리 감사드립니다. ,

1) 어떤 시점에서 당신의 요로 감염의 유형으로 com.apple.appname.document가 있고, 그 시간에, 당신은 파일 시스템에 유형의 사용자 지정 문서를 만든 :

+0

UTI 용 사용자 지정 확장 프로그램을 만들었습니까? –

답변

3

는 다음을 수행 한 지점에서 당신을했다.

3) 그런 다음 앱에서 UTI 설정을 변경했습니다.

4) 1 단계에서 생성 한 파일의 정보를보고 있는데이 파일을 만든 이래로 변경되지 않았습니까?

그렇다면 touch에 터미널을 사용하여 해당 파일을 스포트라이트 다시 색인화 한 다음 다시 한 번 살펴보십시오.

그렇지 않으면, 그것은 또한 앱의 모든 외부 사본을 제거 있는지 확인하는 데 도움이 수 후 실행 서비스 데이터베이스를 재 구축 (당신이 유틸리티를 사용할 수 있습니다 나는 그것을 할 썼다. Rebuild Launch Services Database 일반적으로

를, 당신의 나는 다음과 같은 추천 불구의 Info.plist 정보는 OK이다. 당신이 정말 당신이 무슨 일을하는지 알고있는 경우 UTExportedTypeDeclarationsUTTypeTagSpecification에서 만 지정한 OSTYPE (파일 타입 코드)에

  • 그것은 당신을 의미 물론 'appe'과 같은 유형은 사용하지 않습니다.이 유형은 모두 소문자입니다. ters는 Apple 용으로 예약되어 있습니다. 나는 당신이 창조자 부호 (CFBundleSignature s)를 Apple에 등록 할 것을 요구되었다는 것을 알고있다 (나는 몇몇을했다), 나는 파일 유형에 관하여 확실하지 않더라도, 그들이 아직도 그것을하고 있다는 것을 있건 없건간에. 임의의 파일 유형 코드를 지정하고 지난 30 년 동안 실제 코드가 사용 된 것에 대한 느낌이 없으면 기존의 정의 된 유형과 충돌 할 위험이 있습니다.

  • 문서 유형을 사용자의 유형에 맞게 변경하십시오. com.mycompany.appname.extension과 같은 것입니다. 당신의 Info.plist에있는 키가없는 것을 확인 마지막으로, 다음

    <key>CFBundleDocumentTypes</key> 
    <array> 
        <dict> 
         <key>LSItemContentTypes</key> 
         <array> 
           <string>com.mycompany.appname.extension</string> 
         </array> 
         <key>CFBundleTypeIconFile</key> 
         <string>Icon</string> 
         <key>CFBundleTypeName</key> 
         <string>Custom Document</string> 
         <key>CFBundleTypeRole</key> 
         <string>Editor</string> 
         <key>LSHandlerRank</key> 
         <string>Default</string> 
         <key>NSDocumentClass</key> 
         <string>MyDocument</string> 
        </dict> 
    </array> 
    

    :

그런 다음 CFBundleTypeExtensions 항목을 제거하고 다음과 같은 LSItemContentTypes을 추가하여 문서 CFBundleDocumentTypes 항목을 변경 변경 InfoPlist.strings 파일에 현지화 된 버전으로 덮어 씁니다 (있는 경우).

+0

정말 고마워요! 매력처럼 일했습니다. 참고로 UTI를 소문자로 유지하십시오. – spudwaffle

+0

파일을 만진 것은 효과가 있었습니까? 또는? – NSGod

+0

모든 단계를 조합 한 것처럼 보였습니다. – spudwaffle