Не удается переопределить ITunesTrack или любой другой класс в ITunes.h ScriptBridge
Я пытаюсь обновить свой установщик iTunes "Дата добавления" с помощью MacRuby.
Я создал файл ScriptingBridge, и я могу читать треки из библиотеки. И так как установщик dateAdded является R/O, мне нужно переопределить установщик в ITunesTrack, однако, просто повторно открыв класс ITunesTrack, я получаю эту ошибку
11:15:09.964 macruby[4888:903] -[ITunesTrack initWithContext:specifier:]: unrecognized selector sent to instance 0x2006b8ca0
uncaught Objective-C/C++ exception...
2012-05-21 11:15:09.965 macruby[4888:903] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[ITunesTrack initWithContext:specifier:]: unrecognized selector sent to instance 0x2006b8ca0'
*** Call stack at first throw:
(
0 CoreFoundation 0x00007fff8280b784 __exceptionPreprocess + 180
1 libobjc.A.dylib 0x00007fff87d20f03 objc_exception_throw + 45
2 CoreFoundation 0x00007fff82865110 +[NSObject(NSObject) doesNotRecognizeSelector:] + 0
3 CoreFoundation 0x00007fff827dd8ef ___forwarding___ + 751
4 CoreFoundation 0x00007fff827d9a38 _CF_forwarding_prep_0 + 232
5 ScriptingBridge 0x00007fff89afcb3d -[SBObject childWithClass:code:keyForm:keyDesc:] + 143
6 CoreFoundation 0x00007fff827b6534 -[NSArray getObjects:range:] + 132
7 CoreFoundation 0x00007fff828158fe -[NSArray countByEnumeratingWithState:objects:count:] + 206
8 libmacruby.dylib 0x000000010016a128 rb_ary_freeze + 10680
9 libmacruby.dylib 0x000000010013e018 rb_vm_dispatch + 8504
10 libmacruby.dylib 0x00000001000f3a0f rb_objc_block_call + 191
11 libmacruby.dylib 0x0000000100028601 rb_Complex + 5473
12 libmacruby.dylib 0x000000010013e161 rb_vm_dispatch + 8833
13 ??? 0x0000000103200c84 0x0 + 4347399300
14 ??? 0x0000000103200531 0x0 + 4347397425
15 libmacruby.dylib 0x0000000100154233 rb_vm_run + 531
16 libmacruby.dylib 0x0000000100030ca0 ruby_run_node + 80
17 macruby 0x0000000100000cf8 main + 152
18 macruby 0x0000000100000c54 start + 52
)
terminate called after throwing an instance of 'NSException'
Abort trap
И вот мой код:
#!/usr/local/bin/macruby
framework 'cocoa'
framework 'Foundation'
framework "ScriptingBridge"
iTunes = SBApplication.applicationWithBundleIdentifier("com.apple.iTunes")
load_bridge_support_file 'iTunes.bridgesupport'
old_date = Time.mktime(2001, 01, 01)
sources = iTunes
.sources
.find {|s|
s.name == "Library"
}.playlists
.find{|p|
p.name == "Library"
}.tracks
.find{|t|
# dateAdded is of Time class
if (t.artist.eql?("Bon Iver"))
t.dateAdded = old_date
puts "Update #{t.artist} - #{t.album} - #{t.name} "
end
}
class ITunesTrack
#def method_missing(m, *args, &block)
# puts "Ahoy there!s"
# segments = m.to_s.split('_')
# missing_meth = segments.map{|part| part.capitalize}.join
#end
end
Неважно, если я закомментирую method_missing или нет, независимо от того, что я положил в этот блок класса, я получаю ту же ошибку. Есть идеи?