起因
最近开发macOS的应用,需要想Xcode那样打开.xcloc
结尾的文件夹。如图,虽在在Finder
中zh-Hans.xcloc
显示为文件夹,但是在Xcode打开它时,它却显示为一个文件(前面没有文件夹的三角形标志)。
在Xcode中的Info.plist
里,xcloc
文件是定义在Exported Type UTIs
中的。因此,如果只是想达到和Xcode同样的效果,只需要将这段xml片段,复制到你自己的Info.plist
里。
更进一步
Xcode的做法是只在它的导入中将.xcloc
的文件夹视为文件,而在Finder
中,.xcloc
的文件夹还是文件夹的状态。但是,如果是想直接通过双击的方式打开.xcloc
的文件夹,则需要Finder
同样显示.xcloc
的文件夹视为文件。
原理
macOS通过UTI
来判断数据的类型,若UTI
不存在,则通过扩展名判断。
在
Finder
中我们见到的文件
和文件夹
,从本质上讲,都是存储在电脑中的数据
。不过为了管理的需要,我们将单独的数据称之为文件
,将包含了其它数据的数据称之为文件夹
。
特别的,macOS允许我们将特定的文件夹,在Finder
中显示为文件
。通过在Info.plist
中设定LSTypeIsPackage
属性为真可以让Finder
将文件夹
看作是文件
。
但是,这个属性
英文版
Show certain folder as a file as Xcode does