파일 형식 쌍에 확장명으로 일치하는 UTI를 추가하려고합니다. 필자가 제대로 설정했다고 생각합니다. 최소한 파일 확장자가 UTI 매핑인지 (필자는 info.plist에서 가져온 유형으로 선언했습니다). 그러나 테스트 파일에서 UTI를 꺼내려고하면 동적 UTI가 반환됩니다.파일 형식에 UTI 할당
NSString *previewTypeUTI = nil;
NSURL *previewFileURL = [NSURL fileURLWithPath:@"/Users/eblair/Desktop/EWF/thetestfile.myext1"];
[previewFileURL getResourceValue:&previewTypeUTI forKey:NSURLTypeIdentifierKey error:nil];
NSLog(@"%@", previewTypeUTI); // #1
NSString *testUTI = (NSString *)UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (CFStringRef)[previewFileURL pathExtension], NULL);
NSLog(@"%@", testUTI); // #2
[testUTI release];
NSLog # 1 출력합니다 "DYN ########."와 NSLog # 2 출력합니다 "com.mycompany.filetype1 : 여기이 두 사례를 테스트하기 위해 사용하고 샘플 코드는 ". 나는 그들이 똑같은 것을 인쇄 할 것을 기대했을 것입니다. 파일 -> UTI 매핑을 작동시키기위한 몇 가지 추가 단계가 있습니까? 아니면 따라 잡을 필요가있는 실행 서비스의 경우입니까?
UTI를 활용하는 일부 API를 사용하고 해당 API가 파일 -> UTI 매핑을 사용하는 것처럼 보이기 때문에 확장 -> UTI 매핑을 사용하는 것은 옵션이 아닙니다. 완성도를 위해서
, 여기 가져온 유형에 대한 PLIST 항목입니다 :<key>UTImportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.disk-image</string>
</array>
<key>UTTypeDescription</key>
<string>File Type 1</string>
<key>UTTypeIdentifier</key>
<string>com.mycompany.filetype1</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>myext1</string>
</array>
</dict>
</dict>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.disk-image</string>
</array>
<key>UTTypeDescription</key>
<string>File Type 2</string>
<key>UTTypeIdentifier</key>
<string>com.mycompany.filetype2</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>myext2</string>
</array>
</dict>
</dict>
</array>