どのように私はOBJ-C AppScriptでiTunesの曲にアートワークを追加するには?
質問
aTrack値がJPEGにURLを経由して初期化し、NSImageでは*オブジェクトである、ITReference *オブジェクトです。
[[[[[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のドキュメントでは、「アートワーク」項目の「データ」プロパティはPICTPicture画像であると述べています。
どのように私はNSImageでははPICTに変換するのですか?私はすべてが間違っAppScriptを使用しているか?
解決
Appscriptは一部で、NSImageではを橋渡ししません。一部のAppleイベントの使用状況のこの地域はよくspeccedされていないため。 iTunesの作品を扱うときに理論的には、画像関連AEDescsは、PICTヘッダとビットマップデータの標準ブロックが、ISTR様々な激論を含める必要があります。それは厄介だ。
意味のある記述子タイプなしにAEDescにデータをパックすると、大部分が無意味であるため、のNSDataがブリッジされていません。あなたはNSDataのインスタンスをパックしたい場合は、+[NSAppleEventDescriptor descriptorWithDescriptorType:data:]
を使用します。
またartwork
クラスのraw data
プロパティを見てみましょう。それは後で加えますと、より賢明な形式で画像データが含まれている場合があります。
ああ、とEyeTunesフレームワークを見てみましょう。それは、AppleScriptの/ appscriptを使っほど柔軟または効率的ではないのですが、私はそれがAEDescsにNSImageではを埋めるためのコードを含んでいると考えています。