如何在Objective-C中更改MacOS中的文件图标?

Bar*_*Naz 2 macos cocoa icons alias objective-c

我的MacOS程序正在创建另一个文件的别名,我希望这个别名有一些指定的图标.如何使用Objective-C,最好是在Cocoa?

Rob*_*ger 5

你可以使用NSWorkspace,它有一个方法来做到这一点:

//anImage is an NSImage object and
//pathToFile is a path string
[[NSWorkspace sharedWorkspace] setIcon:anImage forFile:pathToFile options:0];
Run Code Online (Sandbox Code Playgroud)

这会将图标数据保存到文件的Resource Fork中.目前,Mac OS不使用实际的资源分支,因此映像存储在名为的HFS扩展属性中com.apple.ResourceFork.

扩展属性是附加到文件的文件系统元数据.您可以使用xattr相关命令查看附加到文件的扩展属性.

请注意,扩展属性仅在HFS +文件系统上保证可靠,如果文件位于不支持文件元数据的文件服务器上,或者在具有非HFS文件系统的外部驱动器上,则可能无法写入图标.