gpt4 book ai didi

objective-c - 将 UTI 分配给文件类型

转载 作者:行者123 更新时间:2023-12-04 02:37:26 25 4
gpt4 key购买 nike

我正在尝试为一对文件类型添加 UTI,通过扩展名匹配。我想我已经正确设置了它——至少,文件扩展名 -> UTI 映射被识别(我在 info.plist 中将其声明为导入类型)。但是,当我尝试从我的测试文件中删除 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 映射不是一个选项,因为我想使用一些利用 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>

最佳答案

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

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

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

关于objective-c - 将 UTI 分配给文件类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3353851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com