为什么UTTypeCreatePreferredIdentifierForTag返回奇怪的UTI?

时间:2017-04-20 11:39:34

标签: ios swift uti

如果我称之为

import UIKit
import MobileCoreServices
import Foundation

var fileExtension:CFString = "7z" as CFString
var unmanagedFileUTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, fileExtension, nil)?.takeRetainedValue();
print(unmanagedFileUTI)

我得到了

  

dyn.age8xs8u

结果。我没有在age8xs8u找到任何信息。这是7z的正确UTI吗?

1 个答案:

答案 0 :(得分:2)

这意味着MobileCoreServices框架不知道“7z”文件扩展名,并且未被任何已安装的应用程序注册。在这种情况下 UTTypeCreatePreferredIdentifierForTag()创建并返回一个临时UTI:

  

如果未找到结果,则此函数将创建以dyn前缀开头的动态类型。这允许您传递UTI并将其转换回原始标记。

仅当nil参数无效时,函数才返回inTagClass。 对于任意文件标识符,使用有效的标记类参数,您将始终返回UTI。

您可以检查返回值是否具有前缀“dyn”。为了检查 如果返回的UTI是动态创建的UTI或注册的UTI。

根据https://en.wikipedia.org/wiki/7z,7z文件的UTI 格式为“org.7-zip.7-zip-archive”。