Cocoa 在OSX上显示创建者代码的图标

Cocoa 在OSX上显示创建者代码的图标,cocoa,macos,osx-snow-leopard,osx-lion,hfs,Cocoa,Macos,Osx Snow Leopard,Osx Lion,Hfs,如何根据文件创建者代码/类型代码显示自定义图标。例如,我有一个应用程序,它打开的文件的创建者代码为“TSTx”,我如何设置该创建者代码的图标 我猜这就是像Cyberduck这样的应用程序在下载文件时在不更改文件扩展名的情况下显示进度图标的方式,这就是我试图复制的行为 谢谢, J您不应该依赖创建者和类型代码来完成此操作。并非所有文件都指定了它们。事实上,甚至不是所有的应用程序都有唯一的创建者代码,所以这肯定会被破坏 如果这些文件确实存在于文件系统中,并且具有正确的路径扩展名,-[NSWorkspa

如何根据文件创建者代码/类型代码显示自定义图标。例如,我有一个应用程序,它打开的文件的创建者代码为“TSTx”,我如何设置该创建者代码的图标

我猜这就是像Cyberduck这样的应用程序在下载文件时在不更改文件扩展名的情况下显示进度图标的方式,这就是我试图复制的行为

谢谢,
J

您不应该依赖创建者和类型代码来完成此操作。并非所有文件都指定了它们。事实上,甚至不是所有的应用程序都有唯一的创建者代码,所以这肯定会被破坏

如果这些文件确实存在于文件系统中,并且具有正确的路径扩展名,
-[NSWorkspace iconForFile::
应该可以做到这一点。(我认为这也适用于自定义图标。)如果文件系统中不存在该文件(例如,因为它存储在数据库中),
-[NSWorkspace iconForFileType::
。您可以为它提供一个路径扩展,或者,如果您坚持的话,提供一个HFS类型代码(您必须用它包装成字符串)


要设置查找器使用的自定义图标,不需要类型和创建者代码。使用
-[NSWorkspace setIcon:forFile:options://code>

感谢您的回复,但在本例中,我可以保证创建者代码和类型代码存在。我只需要根据代码在Finder中显示一个图标。扩展名不是一个有效的选项,因为我试图重现Cyberduck的行为,其中文件扩展名保持不变,但图标临时更改。我很困惑–您想在应用程序中显示图标,还是在Finder中设置自定义图标?要设置查找器使用的自定义图标,不需要类型和创建者代码。使用
-[NSWorkspace setIcon:forFile:options:][/code>。(我编辑了我的答案以包含此选项。)我想在finder中设置图标,但
NSWorkspace setIcon:forFile:options
不是一个选项,因为它要求文件可写(我猜它会更新资源叉?)。文件系统为只读,但某些文件将包含特定的HFS类型代码。我只想将其与静态图标关联,以防止查找程序读取文件数据来创建图标。