Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode 如何关闭Finder';我的应用程序的s图标预览';什么是文档类型?_Xcode_Macos_Icons_Finder_Uti - Fatal编程技术网

Xcode 如何关闭Finder';我的应用程序的s图标预览';什么是文档类型?

Xcode 如何关闭Finder';我的应用程序的s图标预览';什么是文档类型?,xcode,macos,icons,finder,uti,Xcode,Macos,Icons,Finder,Uti,我已经设法做了正确的舞蹈,并为我的OSX应用程序的文档类型设置了自定义UTI,以及自定义文件扩展名等等。我也为我的文件类型设置了一个图标,这也起作用了。我知道这一点,因为当我从我的应用程序中保存一个新文件时,我可以看到它以正确的图标出现在Finder中。但是–大约一秒钟后,Finder将我的图标替换为一个通用的“预览”图标,在图标内显示我文件的文本内容,在预览图标底部显示我的文件扩展名(大写),如下所示: 我认为这是因为我声明我的自定义UTI具有MIME类型text/plain,并且符合pub

我已经设法做了正确的舞蹈,并为我的OSX应用程序的文档类型设置了自定义UTI,以及自定义文件扩展名等等。我也为我的文件类型设置了一个图标,这也起作用了。我知道这一点,因为当我从我的应用程序中保存一个新文件时,我可以看到它以正确的图标出现在Finder中。但是–大约一秒钟后,Finder将我的图标替换为一个通用的“预览”图标,在图标内显示我文件的文本内容,在预览图标底部显示我的文件扩展名(大写),如下所示:

我认为这是因为我声明我的自定义UTI具有MIME类型
text/plain
,并且符合
public.utf8 plain text
。我确实想这样做,因为它们实际上是文本文件,我想允许用户这样对待它们,让其他应用程序识别它们,等等。但鉴于此,查找器(可能通过一些QuickLook生成器或其他方式)因此会说:“啊哈,这是一个文本文件,我知道如何为文本文件制作自定义预览图标!”并替换我的自定义图标。不用说,这不是我想要的。我怎样才能防止这种情况发生?我在我的项目中使用Objective-C,但我不认为这是一个特定于语言的问题;这一切都与我的应用程序plist中的UTI声明有关

说到这里,这里是我的UTI在Xcode中配置方式的屏幕截图:

下面是Xcode中UTI导出的屏幕截图:


图标预览可以显示为问号;这是因为图标图像作为
.iconset
文件夹包含在我的项目中,该文件夹在构建时由Xcode转换为必需的
.icns
文件,而Xcode不够智能,无法显示正确的预览。但正如我上面所说的,在被预览图标替换之前,正确的图标确实会在Finder中显示一秒钟,因此图标
.icns
文件的设置和
.icns
到UTI的绑定显然是有效的。同样,如果我在Finder中对我的文件执行“获取信息”,顺便说一下,它会在信息窗口的左上角显示正确的图标。正确的图标也显示在我的应用程序窗口的标题栏中。只是在Finder的显示中使用了错误的图标。有什么想法吗?

经过进一步的实验,到目前为止,我能找到的最佳解决方案是将“符合”字段从
public.utf8纯文本
更改为简单的
public.text
public.text
UTI适用于任何类型的文本–任何编码,带标记或不带标记等。任何更具体的符合UTI的内容似乎都会导致Finder(或任何人)替换我的图标。但是使用
public.text
时,图标不会被替换,这可能是因为无论是谁,都觉得自己没有足够的信息来继续操作,因为
public.text
非常通用


这确实不是最优的,因为这意味着我的UTI导出信息中没有公开说明我的文件所使用的编码,这使得其他应用程序不太可能以文本形式打开我的应用程序的文件。如果其他人有更好的解决方案,我很乐意投赞成票,而不是这个答案。但为了子孙后代,我提出了这个答案,因为它可能会帮助其他类似的人。

我刚刚在苹果上记录了一个关于这个问题的错误。