Показать значок для кода создателя в OSX

Как я могу отобразить собственный значок в зависимости от кода/типа создателя файлов. Например, у меня есть приложение, которое открывает файлы с кодом создателя «TSTx». Как мне установить значок для этого кода создателя?

Я предполагаю, что такие приложения, как Cyberduck, показывают значок прогресса, когда файл загружается без изменения расширения файла, и это поведение, которое я пытаюсь воспроизвести.

Спасибо, Дж.


person JWood    schedule 06.08.2011    source источник


Ответы (1)


Вы не должны полагаться на коды создателя и типа для этого. Не всем файлам они назначены. На самом деле, даже не все приложения имеют уникальные коды создателя, так что это гарантированно сломается.

Если эти файлы существуют в файловой системе и имеют правильные расширения пути, -[NSWorkspace iconForFile:] должен помочь. (Я думаю, что это также будет работать с пользовательскими значками.) Если файл не существует в файловой системе (например, потому что он хранится в базе данных), -[NSWorkspace iconForFileType:] — это путь. Вы можете предоставить ему расширение пути или, если вы настаиваете, код типа HFS (который вы должны обернуть строкой с функцию NSFileTypeForHFSTypeCode).

Чтобы установить собственный значок для использования в Finder, вам не нужны коды типа и кода создателя. Используйте -[NSWorkspace setIcon:forFile:options:].

person gcbrueckmann    schedule 06.08.2011
comment
Спасибо за ответ, но в этом случае я могу гарантировать наличие кода создателя и кода типа. Мне просто нужно отобразить значок в Finder на основе кодов. Расширения не являются допустимым вариантом, поскольку я пытаюсь воспроизвести поведение Cyberduck, когда расширение файла остается прежним, но значок временно изменяется. - person JWood; 06.08.2011
comment
Я запутался — вы хотите отобразить значок в своем приложении или установить собственный значок в Finder? Чтобы установить собственный значок для использования в Finder, вам не нужны коды типа и кода создателя. Используйте 1_. (Я отредактировал свой ответ, чтобы включить эту опцию.) - person gcbrueckmann; 06.08.2011
comment
Я хочу установить значок в поисковике, но NSWorkspace setIcon:forFile:options не вариант, так как он требует, чтобы файл был доступен для записи (я предполагаю, что он обновляет вилку ресурсов?). Файловая система доступна только для чтения, но некоторые файлы будут содержать определенный код типа HFS. Я просто хочу связать это со статическим значком, чтобы предотвратить чтение данных файла Finder для создания значка. - person JWood; 08.08.2011