2010-03-10 5 views
1

aTrack은 ITReference * 객체이며, value는 NSImage * 객체로, URL을 통해 jpeg로 초기화됩니다.obj-c AppScript를 사용하여 iTunes 트랙에 삽화를 추가하려면 어떻게합니까?

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=(

내가 다음 코드 시도 :

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

나는 GDB에 다음과 같은 메시지가

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를 모두 잘못 사용하고 있습니까?

답변

0

Appscript는 NSImage를 연결하지 않습니다. NSImage가 AppKit이고 appscript가 Foundation에만 연결되기 때문입니다. 부분적으로는 Apple 이벤트 사용 영역이 잘 알려지지 않았기 때문입니다. 이론적으로 이미지 관련 AEDescs에는 비트 맵 데이터의 표준 블록이 포함되어야하지만 ISTR에는 iTunes 작품을 처리 할 때 PICT 헤더가있는 여러 번 혼란이 있습니다. 지저분 해.

NSData는 의미있는 설명자 유형없이 AEDesc에 데이터를 압축하는 것이 거의 무의미하기 때문에 브리지되지 않습니다. NSData 인스턴스를 패킹하려면 +[NSAppleEventDescriptor descriptorWithDescriptorType:data:]을 사용하십시오.

또한 artwork 클래스의 raw data 속성을 살펴보십시오. 그것은 나중에 추가 된 것이며 더 현명한 형식으로 이미지 데이터를 포함 할 수 있습니다.

아, 그리고 EyeTunes 프레임 워크를 살펴보십시오. AppleScript/appscript를 사용하는 것보다 유연하거나 효율적이지는 않지만 NSImage를 AEDescs에 연결하는 코드가 포함되어 있다고 생각합니다.