Frage

AVerfolgen ist ein ITReference * Objekt-Wert ist ein NSImage * Objekt über eine URL zu einem jpeg initialisiert.

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

Ich erhalte die folgende Meldung in 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=(

Ich habe dann versucht, den folgenden Code:

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

und diese Meldung anstelle

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

In der AppScript Dokumentation, heißt es, dass die „Daten“ Eigenschaft des „Kunstwerk“ Artikels ist ein PICTPicture Bild.

Wie konvertiere ich ein NSImage zu einem PICT? Bin ich mit dem AppScript alles falsch?

War es hilfreich?

Lösung

Appscript nicht überbrücken NSImage, teilweise, weil NSImage ist AppKit und appscript Links gegen Foundation nur; teilweise, weil dieser Bereich von Apple Events Nutzung nicht gut specced. In der Theorie bildbezogene AEDescs sollte einen Standardblock von Bitmap-Daten enthält, aber ISTR verschiedene Probleme mit PICT-Header, wenn es mit iTunes Kunstwerken beschäftigen. Es ist chaotisch.

NSData ist nicht zu überbrücken, da die Daten Verpackung in eine AEDesc ohne eine sinnvolle Deskriptorenart weitgehend sinnlos. Wenn Sie eine NSData Instanz packen möchten, verwenden Sie +[NSAppleEventDescriptor descriptorWithDescriptorType:data:].

Werfen Sie auch einen Blick auf die artwork Unterkunft raw data Klasse. Das ist eine spätere Ergänzung und möglicherweise Bilddaten in einer vernünftigeren Form enthalten.

Oh, und werfen Sie einen Blick auf die EyeTunes Rahmen; es ist nicht so flexibel oder effizient wie Apple / appscript, aber ich denke, es Code enthält NSImage zu AEDescs zur Überbrückung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top