2014-11-14 4 views
3

Я использую NSWorkSpace SetIcon: forFile: options: в папке. Однако, хотя API возвращает успех (true) каждый раз, когда используется api, иногда значок не обновляется в папке.NSWorkSpace SetIcon not Refreshing

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

Есть ли способ определить, когда Икона действительно была установлена, и папка должна быть обновлена? И есть ли способ обновить папку, не создавая & удаляя файл быстро?

Благодаря

+0

Я сделал несколько исследований здесь: [GitHubGIST :: Noitidart/_ff-addon-snippet-SetIconForFile.js] (https://gist.github.com/Noitidart/9dbb37af01f4939cbcca) вы можете передать 'nil' вместо' icon ', и он вернет изображение к тому, что иконка должна быть по умолчанию на основе 'plist.info' и изображений в'/Contents/Resources/'. Есть некоторые предостережения, как будто вы должны сначала что-то придумать с этой функцией, тогда вы можете передать 'nil', и он вернется. Не могли бы вы подтвердить. – Noitidart

ответ

2

Оказывается, есть функция, чтобы помочь уведомить Finder изменения файла. NSWorkSpace noteFileSystemChanged делает это. Однако он не работает для изменения значков папки.

Кажется, что единственным вариантом является создание/удаление файла.

+0

Создает/удаляет файл для 10.9? я попробовал, но это не освежало. У меня есть файл blah.app на моих рабочих столах, я вошел в него содержимое/ресурсы/appicon.icns и заменил его другим значком, также называемым appicon.icns, но значок не принимает :( – Noitidart

+1

Действительно ли он работает для 10.9 Используете ли вы API SetIcon? Кажется, что вы заменяете файл, но ничего не вызываете - система может не знать, использовать новый файл, возможно, из-за кэширования. – Edo

+0

Спасибо @ Не можете ли вы посмотреть мой скринкаст, он, похоже, не работает для меня Я создаю файл с NSFileManager createFileAtPath, а затем удаляю его с помощью removeItemAtPath: [Youtube :: Demo of Create-Remove File Not Updating Icon] (https://www.youtube.com/watch?v=WcAxUCWB05g) Я понятия не имею, почему это не заставит мое приложение обновиться до значка, который я заменил на него. – Noitidart