Cocoa NSWorkspace setIcon:forFile: параметры: не работает

#objective-c #cocoa #nsworkspace

#objective-c #cocoa #nsworkspace

Вопрос:

Я копирую файл png в некоторую целевую папку, а затем устанавливаю для его значка какой-то специальный значок. Однако значок не меняется — он остается предварительным просмотром файла png. Можно ли принудительно заменить значок? Возможно, программно отключить тенденцию png использовать изображение предварительного просмотра?

То, что я делаю, это:

 [[NSFileManager defaultManager] copyItemAtPath:filename toPath:path error:nil];
NSImage* iconImage = [[NSImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"myIcon" ofType:@"icns"]];
[[NSWorkspace sharedWorkspace] setIcon:iconImage forFile:path options:0];
  

PS — приведенный выше код отлично работает для файлов, у которых нет функции предварительного просмотра (например, файлов, которые я создал вручную со своим специальным суффиксом).

Спасибо, Нили

Комментарии:

1. Возможно, вам захочется взглянуть на API быстрого просмотра

Ответ №1:

По-видимому, файлы, которые были скопированы [[NSFileManager defaultManager] copyItemAtPath:], отображают свой старый значок, который создается с помощью механизма быстрого просмотра. Файлы, которые создаются моим приложением и сразу же получают свой значок в моем приложении, не прерываются механизмом быстрого просмотра. Мое решение — не копировать файл, а создавать его самостоятельно, и тогда все работает гладко.

Хотелось бы получить лучший ответ / обходной путь…