You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 14:57:33