我需要一个自定义的文件格式,我的应用程序,我认为我可以做一个超集的PNG。macOS在Finder中显示常规PNG文件的预览(以及具有.png扩展名的APNG)。我希望macOS显示我的文件格式的预览,即使它没有.png扩展名。我需要告诉macOS,具有.px2扩展名的文件是有效的PNG,可以由常规的PNG解码器解码。
我一直在阅读此页,试图找到合适的密钥集使用,但我没有任何运气。我认为NSExportableTypes可能是答案,但似乎并不是这样。
为了测试这一点,我将APNG文件的扩展名从.png更改为.px2。我意识到我可以只使用.png,但我认为这可能有点混乱(无论对用户还是对操作系统)。
我想做的事情很有可能是不可能的!
发布于 2019-08-02 14:19:07
我认为您可能会看到两个不同的问题:一个是操作系统识别文件类型并将其链接到您的应用程序,另一个是能够显示预览。
后者将高度依赖于Finder内置的QuickLook插件的工作方式。您可能需要自己实现其中之一。
调试这些问题可能有点棘手,因为您需要确保macOS已经吸收了您的NSExportableTypes。一个快速检查是进入终端并使用mdls <file of your type and extension>并查看文件中的kMDItemContentType和kMDItemContentTypeTree是什么。
如果它根本没有识别扩展,请确保它已经通过使用隐藏在lsregister的LaunchServices框架中的CoreServices重新加载。
获取手册页的/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -lint -f <path>强制重新加载应用程序( -lint),在解释条目时添加关于错误的更多细节。
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -seed将重置守护进程,并从默认应用程序和库位置重新启动数据。
https://stackoverflow.com/questions/57176791
复制相似问题