将NSImage.imageTypes转为UTType数组,验证NSOpenPanel文件类型设置等价性
关于NSOpenPanel新旧API等价实现的疑问
我正尝试使用新的-[NSOpenPanel setAllowedContentTypes:]方法,寻找与-[NSOpenPanel setAllowedFileTypes:[NSImage imageTypes]]等价的实现方式。请问以下写法是否等价:
openPanel.allowedContentTypes = [UTType.image]
[openPanel setAllowedFileTypes:@[kUTTypeImage]]; // 原写法:[openPanel setAllowedFileTypes:[NSImage imageTypes]];
注意事项1
将NSImage.imageTypes转换为UTType数组时存在差异,有4个标识符转换失败:"com.apple.atx", "org.khronos.ktx2", "public.avis", "com.microsoft.cur"
对应的验证代码:
let types = NSImage.imageTypes.count // 结果为61 let utTypes = NSImage.imageTypes.compactMap { UTType($0) } // 结果为57 let coreTypes = CGImageSourceCopyTypeIdentifiers() // 结果为59;不包含SVG类型
注意事项2
PDF类型并不属于UTType.image的子类型,验证代码如下:
print(UTType.pdf.conforms(to: UTType.image)) // 输出结果为false
内容的提问来源于stack exchange,提问作者Marek H
相关产品推荐
相关产品推荐

