Как добавить обложку в трек iTunes с помощью obj-c AppScript? - PullRequest
1 голос
/ 10 марта 2010

aTrack - это объект ITReference *, значение - это объект NSImage *, инициализированный через URL-адрес jpeg.

[[[[[aTrack artworks] data_] set] to:value] send];

Я получаю следующее сообщение в GDB:

2010-03-09 16:59:42.860 Sandbox[2260:a0f] Can't pack object of class NSImage (unsupported type): <NSImage 0x10054a440 Size={0, 0} Reps=(

Затем я попробовал следующий код:

NSData *imageData = [[NSData alloc] initWithData:[value TIFFRepresentation]];
[[[[[aTrack artworks] data_] set] to:imageData] send];

и получите это сообщение вместо

2010-03-09 16:46:09.341 Sandbox[2193:a0f] Can't pack object of class NSConcreteData (unsupported type): <4d4d002a 00000000>

В документации AppScript говорится, что свойство «data» элемента «artwork» является изображением PICTPicture.

Как мне преобразовать NSImage в PICT? Я неправильно использую AppScript?

1 Ответ

0 голосов
/ 11 марта 2010

Appscript не соединяет NSImage, отчасти потому, что NSImage - это AppKit и приложения связывают только с Foundation; частично потому, что эта область использования событий Apple не очень хорошо определена. Теоретически, AEDescs, связанные с изображениями, должны содержать стандартный блок растровых данных, но ISTR сталкивается с различными трудностями с заголовками PICT при работе с произведениями iTunes. Это грязно.

NSData не соединен, потому что упаковка данных в AEDesc без значимого типа дескриптора в значительной степени бессмысленна. Если вы хотите упаковать экземпляр NSData, используйте +[NSAppleEventDescriptor descriptorWithDescriptorType:data:].

Также взгляните на свойство raw data класса artwork. Это более позднее дополнение может содержать данные изображения в более разумной форме.

О, и взгляните на каркас EyeTunes; он не такой гибкий и эффективный, как использование AppleScript / appscript, но я думаю, что он содержит код для соединения NSImage с AEDescs.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...