Показване на икона за код на създател в 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, не ви трябват кодове за тип и създател. Използвайте -[NSWorkspace setIcon:forFile:options:]. (Редактирах отговора си, за да включа тази опция.) - person gcbrueckmann; 06.08.2011
comment
Искам да задам иконата в търсачката, но NSWorkspace setIcon:forFile:options не е опция, тъй като изисква файлът да може да се записва (предполагам, че актуализира разклонението на ресурсите?). Файловата система е само за четене, но някои от файловете ще съдържат специфичен HFS тип код. Просто искам да свържа това със статична икона, за да предотвратя прочитането на данните от файла от Finder за създаване на икона. - person JWood; 08.08.2011