gpt4 book ai didi

macos - 给定一个 UTI(统一类型标识符),找出它符合的所有类型

转载 作者:行者123 更新时间:2023-12-03 13:32:24 26 4
gpt4 key购买 nike

我正在编写一个使用 Uniform Type Identifiers 的应用程序.具体来说,我调用 UTTypeCreateAllIdentifiersForTag() 并传递各种 MIME类型。

我希望这个函数(与 UTTypeCreatePreferredIdentifierForTag() 不同)会给我最具体的 UTI 以及它符合的所有 UTI。情况似乎并非如此——它要么返回单个 UTI,要么二级 UTI 是虚假的。

UTTypeConformsTo()函数定义在同一个头文件中,但我更喜欢一个函数,它返回一个包含此 UTI 符合的所有类型的数组。

我似乎有希望,如 MDItemCopyAttributeList() 将返回这样一个列表。也就是说,它需要一个 MDItemRef ,它可以从文件路径或 URL 创建 - 这不是很好。有时我的数据只存储在内存中,我只有一个 MIME 类型。

我是否必须遍历整个 UTI 数据库才能获取此信息,还是我遗漏了什么?

最佳答案

我确实错过了一些东西:非常明显的解决方案。当我浏览 LaunchServices 导出的符号时(并注意到有趣但私密的 UTTypeCopyPedigree() ),我想起了 UTTypeCopyDeclaration() , 定义。
UTTypeCopyDeclaration()给出一个 UTI 并返回(作为 CFDictionaryRef)定义 UTI 的属性列表。此字典中键为 kUTTypeConformsToKey 的对象要么是 CFArrayRefCFStringRef .在数组的情况下,可以递归迭代直到达到基本类型。

这就是我为给定 UTI 构建继承树的方式。我希望这可以帮助其他有同样问题的人。

关于macos - 给定一个 UTI(统一类型标识符),找出它符合的所有类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3903953/

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