Objective c 获取给定UTType的扩展名

Objective c 获取给定UTType的扩展名,objective-c,types,Objective C,Types,我知道我可以使用UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension,extension,NULL)获取给定扩展的UTType,但我找不到相反的方法,那就是为给定的UT。。。我能做什么 谢谢UTTypeCopyPreferredTagWithClass用于将UTI转换为另一个标记,如文件扩展名: NSString *extension = (__bridge_transfer NSString *)UTTypeCop

我知道我可以使用UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension,extension,NULL)获取给定扩展的UTType,但我找不到相反的方法,那就是为给定的UT。。。我能做什么


谢谢

UTTypeCopyPreferredTagWithClass
用于将UTI转换为另一个标记,如文件扩展名:

NSString *extension = (__bridge_transfer NSString *)UTTypeCopyPreferredTagWithClass(myUTI, kUTTagClassFilenameExtension);
斯威夫特5
导入MobileCoReserves
静态func文件扩展名(用于dataUTI:String)->String?{
guard let fileExtension=UTTypeCopyPreferredTagWithClass(数据UTI作为CFString,kUTTagClassFilenameExtension)else{
归零
}
返回字符串(fileExtension.takeRetainedValue())
}

非常酷。我还没有测试它,因为我有一个额外的问题:类引用说“将统一类型标识符转换为标记列表”,但返回类型是CFStringRef。。。这不应该是CFArrayRef吗?绝对正确。关于函数的返回类型,文档是矛盾的。您应该提交一个文档错误。不过,函数返回的是字符串,而不是数组。您需要使用
.takeRetainedValue()
来避免内存泄漏。。。有关更多信息,请参阅和。还有更多关于与C API中的
非托管
返回类型进行快速交互的一般信息。只是根据你的实际建议编辑了它。