代码之家  ›  专栏  ›  技术社区  ›  Jablair

将UTI分配给文件类型

  •  2
  • Jablair  · 技术社区  · 15 年前

    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映射不是一个选项,因为我想使用一些利用UTI的API,而这些API似乎正在使用文件->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>
    
    1 回复  |  直到 15 年前
        1
  •  9
  •   Jablair    14 年前

    public.data 作为一种类型,即使 public.disk-image 已符合 公共数据 UTTypeConformsTo 数组应如下所示:

        <key>UTTypeConformsTo</key>
        <array>
            <string>public.data</string>
            <string>public.disk-image</string>
        </array>
    

    进行此更改后,我的上述文件比较->UTI和扩展->UTI现在产生相同的结果。

    推荐文章