首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将UTI分配给文件类型

将UTI分配给文件类型
EN

Stack Overflow用户
提问于 2010-07-28 22:26:25
回答 1查看 4K关注 0票数 2

我正在尝试为一对文件类型添加UTI,按扩展名匹配。我想我已经正确地设置了它--至少,文件扩展名-> UTI映射是可以识别的(我在info.plist中将其声明为一个导入类型)。然而,当我试图从我的测试文件中取出UTI时,我得到了一个动态的UTI。下面是我用来测试这两种情况的示例代码:

代码语言:javascript
复制
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”。我本以为他们会打印同样的东西。是否有一些额外的步骤来使file->UTI映射工作,或者这是启动服务需要迎头赶上的情况?

仅仅使用扩展名->UTI映射是不可取的,因为我想使用一些利用UTI的API,而这些API似乎正在使用file->UTI映射。

为了完整起见,下面是导入类型的plist条目:

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-28 04:30:45

嗯,已经快一年了,但我今天不得不重新解决这个问题,我想我偶然发现了我做错了什么。看起来您需要包含public.data作为您遵循的类型,即使public.disk-image已经符合public.data。因此,UTTypeConformsTo数组应该如下所示:

代码语言:javascript
复制
    <key>UTTypeConformsTo</key>
    <array>
        <string>public.data</string>
        <string>public.disk-image</string>
    </array>

进行此更改后,我上面对file->UTI和extension->UTI的比较现在产生了相同的结果。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3353851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档