【发布时间】:2012-05-10 17:12:53
【问题描述】:
我知道我可以使用 UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, extension, NULL) 获取给定扩展的 UTType,但我找不到相反的方法,即给定 UT 的扩展数组...什么可以吗?
谢谢
【问题讨论】:
标签: objective-c types
我知道我可以使用 UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, extension, NULL) 获取给定扩展的 UTType,但我找不到相反的方法,即给定 UT 的扩展数组...什么可以吗?
谢谢
【问题讨论】:
标签: objective-c types
UTTypeCopyPreferredTagWithClass 用于将 UTI 转换为另一个标签,例如文件扩展名:
NSString *extension = (__bridge_transfer NSString *)UTTypeCopyPreferredTagWithClass(myUTI, kUTTagClassFilenameExtension);
【讨论】:
import MobileCoreServices
static func fileExtension(for dataUTI: String) -> String? {
guard let fileExtension = UTTypeCopyPreferredTagWithClass(dataUTI as CFString, kUTTagClassFilenameExtension) else {
return nil
}
return String(fileExtension.takeRetainedValue())
}
【讨论】:
.takeRetainedValue() 来避免内存泄漏...有关更多信息,请参阅this answer 和this more general answer。此外,this article 有更多关于 Swift 与来自 C API 的 Unmanaged 返回类型交互的一般信息。