2010-02-17 2 views
2

이 작업을 수행하는 유일한 방법은 문서 기반 응용 프로그램 (이 응용 프로그램이 아닌)입니다. 내 비 문서 기반 응용 프로그램에서는 대상 정보 창의 속성 탭에서 지원되는 문서 형식을 정의하고 내 AppDelegate는 application:openFile:application:openFiles:을 구현합니다. 이렇게하면 응용 프로그램의 Dock 아이콘이 Finder에서 이미 시작되었지만 시작되지 않았을 때 파일을 놓을 수 있습니다 (시작되었거나 그렇지 않은 경우). 내가 뭘 놓치고 있니? 당신의 목표 설정에서파일을 삭제하여 문서 기반이 아닌 코코아 애플리케이션을 어떻게 시작합니까?

<array> 
    <dict> 
     <key>CFBundleTypeExtensions</key> 
     <array> 
      <string>nsf</string> 
      <string>nsfe</string> 
     </array> 
     <key>CFBundleTypeName</key> 
     <string>NSF Soundtrack</string> 
     <key>CFBundleTypeRole</key> 
     <string>None</string> 
     <key>LSTypeIsPackage</key> 
     <false/> 
     <key>NSPersistentStoreTypeKey</key> 
     <string>InMemory</string> 
    </dict> 
</array> 
+0

질문을 편집하여 문서 유형 배열을 포함하고 UTI를 사용하는 경우 UTI 가져 오기 및/또는 내보내기 선언 배열을 포함하십시오. –

+2

'CFBundleTypeRole'을'Editor'로 바꾸는 것은 어떻습니까? – Yuji

+0

가, 내 응용 프로그램은'Viewer' 또는'Editor' (로컬 네트워크의 다른 장치로 파일을 보냄)가 아니므로'CFBundleTypeRole'에'None'을 선택했습니다. 다른 옵션 중 하나로 변경하면 예상대로 작동합니다. –

답변

1

두 부분은 저를 의심합니다

<key>CFBundleTypeRole</key> 
    <string>None</string> 

당신이 뷰어를 최소한으로 의미하지 않는다?

<key>NSPersistentStoreTypeKey</key> 
    <string>InMemory</string> 

여기서 무엇을하려고합니까? 디스크에있는 파일을 인 메모리 핵심 데이터 영구 저장소로 지정하는 이유는 무엇입니까? 로드 할 때 메모리에 모든 것을 넣고 싶다면 InMemory가 아니라 Binary 또는 XML이라고 부릅니다.

확장 기능뿐만 아니라 문서 유형에 대한 UTI를 정의하는 것이 좋습니다.

lsregister을 사용하여 실행 서비스가 어떤 생각을하고 있는지 다시 확인해야합니다. 가끔 문제는 여러 버전의 앱이 놓여 있고 Launch Services가 자신이 갖고 있어야한다고 생각하는 것이 없다는 것입니다. 이 같은 실행 서비스 데이터베이스를 볼 수 있습니다 /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister - 덤프

이 10.5 10.6에서 작동합니다. 10.4의 다른 위치에 lsregister이 있습니다. 나는 보통 그것을 외우려고 노력하는 것보다 찾아 내기 위해 locate을 사용한다.

+0

추가 정보 주셔서 감사합니다. 내가 작성하지 않은 난해한 파일 형식의 UTI는 어떻게 결정합니까? 이 경우에는'public.data public.item'과 같은 것이 충분한가요? 'mdls megaman.nsf'는'kMDItemContentType = "dyn.ah62d4rv4ge80665g"'그냥 사용하겠습니까? –

+0

작성하지 않은 파일 형식에 대해서는 UTI를 생성하지 않아야합니다. 나는 이것이 당신 자신의 파일 유형이라고 생각했다. –

0

속성 탭으로 이동하여 문서 유형 테이블에 추가

, 내 문서 유형 배열을 요청으로

업데이트되었습니다. 이것의

+0

이미 해봤습니다. "... AppDelegate가 지원하는 문서 유형을 정의합니다 ..." –

+0

아, 죄송합니다. –

+0

걱정하지 마라. 내가 원래 말했던 방식은 원래 그것을 분명하게하지 않았다. –

관련 문제