Tôi đã cố gắng tìm ra cách để có được tác phẩm nghệ thuật iTunes cho bài hát hiện đang phát với cây cầu kịch bản. Tôi đã đến một điểm mà nó hoạt động cho một số bài hát, nhưng đối với những người khác, tôi nhận được SIGABRT. Tôi không chắc vấn đề có thể là gì, vì vậy mọi trợ giúp sẽ được đánh giá cao. Dưới đây là những gì tôi có cho đến nay:Tải iTunes tác phẩm nghệ thuật cho bài hát hiện tại với ScriptingBridge
iTunesApplication * iTunes = [SBApplication applicationWithBundleIdentifier:@"com.apple.iTunes"];
NSImage *songArtwork;
iTunesTrack *current = [iTunes currentTrack];
iTunesArtwork *artwork = (iTunesArtwork *)[[[current artworks] get] lastObject];
if(artwork != nil)
songArtwork = [artwork data];
else
songArtwork = [NSImage imageNamed:@"Image.tiff"];
NSMenuItem *artworkMenuItem = [[NSMenuItem alloc] initWithTitle:@"" action:NULL keyEquivalent:@""];
[songArtwork setSize:NSMakeSize(128, 128)];
[artworkMenuItem setImage:songArtwork];
[Menu insertItem:artworkMenuItem atIndex:0];
tôi đối với một số bài hát nó hoạt động, và hiển thị các tác phẩm nghệ thuật độc đáo trong các mục trình đơn, nhưng đối với những người khác tôi nhận được một SIGABRT trên dòng:
[songArtwork setSize:NSMakeSize(128, 128)];
Đầu ra của bảng điều khiển như sau:
2011-08-12 23:13:20.094 SongViewer[2146:707] -[NSAppleEventDescriptor setSize:]: unrecognized selector sent to instance 0x102827f70
2011-08-12 23:13:20.095 SongViewer[2146:707] An uncaught exception was raised
2011-08-12 23:13:20.096 SongViewer[2146:707] -[NSAppleEventDescriptor setSize:]: unrecognized selector sent to instance 0x102827f70
2011-08-12 23:13:20.097 SongViewer[2146:707] (
0 CoreFoundation 0x00007fff86f11986 __exceptionPreprocess + 198
1 libobjc.A.dylib 0x00007fff8b04cd5e objc_exception_throw + 43
2 CoreFoundation 0x00007fff86f9d5ae -[NSObject doesNotRecognizeSelector:] + 190
3 CoreFoundation 0x00007fff86efe803 ___forwarding___ + 371
4 CoreFoundation 0x00007fff86efe618 _CF_forwarding_prep_0 + 232
5 SongViewer 0x0000000100002a83 -[IPMenulet awakeFromNib] + 4483
6 CoreFoundation 0x00007fff86f089e1 -[NSObject performSelector:] + 49
7 CoreFoundation 0x00007fff86f08962 -[NSSet makeObjectsPerformSelector:] + 274
8 AppKit 0x00007fff8d9d9c27 -[NSIBObjectData nibInstantiateWithOwner:topLevelObjects:] + 1245
9 AppKit 0x00007fff8d9d01b9 loadNib + 322
10 AppKit 0x00007fff8d9cf6b6 +[NSBundle(NSNibLoading) _loadNibFile:nameTable:withZone:ownerBundle:] + 217
11 AppKit 0x00007fff8d9cf5d1 +[NSBundle(NSNibLoading) loadNibFile:externalNameTable:withZone:] + 141
12 AppKit 0x00007fff8d9cf514 +[NSBundle(NSNibLoading) loadNibNamed:owner:] + 364
13 AppKit 0x00007fff8dc42355 NSApplicationMain + 398
14 SongViewer 0x0000000100001882 main + 34
15 SongViewer 0x0000000100001854 start + 52
)
2011-08-12 23:13:20.098 SongViewer[2146:707] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSAppleEventDescriptor setSize:]: unrecognized selector sent to instance 0x102827f70'
*** First throw call stack:
(
0 CoreFoundation 0x00007fff86f11986 __exceptionPreprocess + 198
1 libobjc.A.dylib 0x00007fff8b04cd5e objc_exception_throw + 43
2 CoreFoundation 0x00007fff86f9d5ae -[NSObject doesNotRecognizeSelector:] + 190
3 CoreFoundation 0x00007fff86efe803 ___forwarding___ + 371
4 CoreFoundation 0x00007fff86efe618 _CF_forwarding_prep_0 + 232
5 SongViewer 0x0000000100002a83 -[IPMenulet awakeFromNib] + 4483
6 CoreFoundation 0x00007fff86f089e1 -[NSObject performSelector:] + 49
7 CoreFoundation 0x00007fff86f08962 -[NSSet makeObjectsPerformSelector:] + 274
8 AppKit 0x00007fff8d9d9c27 -[NSIBObjectData nibInstantiateWithOwner:topLevelObjects:] + 1245
9 AppKit 0x00007fff8d9d01b9 loadNib + 322
10 AppKit 0x00007fff8d9cf6b6 +[NSBundle(NSNibLoading) _loadNibFile:nameTable:withZone:ownerBundle:] + 217
11 AppKit 0x00007fff8d9cf5d1 +[NSBundle(NSNibLoading) loadNibFile:externalNameTable:withZone:] + 141
12 AppKit 0x00007fff8d9cf514 +[NSBundle(NSNibLoading) loadNibNamed:owner:] + 364
13 AppKit 0x00007fff8dc42355 NSApplicationMain + 398
14 SongViewer 0x0000000100001882 main + 34
15 SongViewer 0x0000000100001854 start + 52
)
terminate called throwing an exception(gdb)
Nếu có ai có ý tưởng gì có thể sai, vui lòng cho tôi biết !!
Bạn nhìn thấy đầu ra console nào khác? – jtbandes
Xin chào jtbandes, cảm ơn bạn đã trả lời. Tôi đã thêm đầu ra bàn điều khiển cho câu hỏi trên. Nó xuất hiện với tôi rằng đối với một số lý do tác phẩm nghệ thuật NSImage * là nil (hoặc NULL?) Và điều đó sẽ giải thích lỗi phân đoạn. Điều kỳ lạ là tôi nghĩ kiểm tra để xem nếu nó được nil sẽ kiểm tra cho rằng ... Tôi đoán không ... Tôi không thực sự chắc chắn làm thế nào để tiếp tục. Từ quan điểm của iTunes, cả hai bài hát tôi đang chơi dường như giống nhau về mặt tác phẩm nghệ thuật. Một người làm việc, và một người thì không. Cảm ơn vì sự giúp đỡ của bạn! :) – alwaysapple
Ok vì vậy tôi đã thu hẹp nó xuống tác phẩm nghệ thuật thực tế của iTunesArtwork * không hợp lệ. Nhưng nó không phải là không. Có cách nào để kiểm tra xem tác phẩm nghệ thuật này có hợp lệ hay không? – alwaysapple