Pergunta

ATRACK é um ITReference * objeto, valor é um NSImage * objeto, inicializado através de um URL a um jpeg.

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

Eu recebo a seguinte mensagem no 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=(

Então eu tentei o código a seguir:

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

e obter esta mensagem em vez

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

Na documentação appscript, ele diz que a propriedade "data" do item "obras de arte" é uma imagem de PICTPicture.

Como faço para converter um NSImage a um PICT? Estou usando o appscript tudo errado?

Foi útil?

Solução

não

appscript não preencher NSImage, em parte porque NSImage é AppKit e ligações appscript contra apenas Foundation; em parte porque esta área de uso de eventos Apple não é bem specced. Em teoria, AEDescs relacionadas com a imagem deve conter um bloco padrão de dados de bitmap, mas ISTR vários aborrecimentos com PICT quando se lida com iTunes obras de arte. É confuso.

NSData não é superada, porque a embalagem de dados em uma AEDesc sem um tipo de descritor significativa é em grande parte inútil. Se você quer embalar uma instância NSData, uso +[NSAppleEventDescriptor descriptorWithDescriptorType:data:].

Também dê uma olhada na propriedade artwork da classe raw data. Isso é uma adição posterior e pode conter dados de imagem de forma mais sensata.

Oh, e dar uma olhada no quadro EyeTunes; não é tão flexível ou eficiente como usar AppleScript / appscript, mas eu acho que inclui o código para colmatar NSImage para AEDescs.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top