2016-11-02 5 views
0

iTunesのスクリプトライブラリを使用してiTunesライブラリのメタデータを更新するためのMacアプリケーションを作成していますが、データの変更を書き込もうとすると苦労します。Scripting Bridgeを使用してiTunesトラックをアップデートする際に例外が発生する

Objective Cで単純なテストアプリケーションを作成して、現在のトラックのコメントフィールドを静的テキストで上書きするだけで問題を実証しました。

私のコードは次のとおりです。

iTunesApplication *myiTunesApp = [SBApplication applicationWithBundleIdentifier:@"com.apple.iTunes"]; 

myiTunesApp.currentTrack.comment = @"Overwriting track comment"; 

BOOL success = myiTunesApp.currentTrack.commitEditing; 

この成功し、新たなコメントを書きますが、次の例外をスローしない:

2016-11-01 21:46:55.307 iTunesScriptingBridgeExample[11117:1091018] -[ITunesTrack commitEditing]: unrecognized selector sent to instance 0x60800004b040 
2016-11-01 21:46:55.308 iTunesScriptingBridgeExample[11117:1091018] -[ITunesTrack commitEditing]: unrecognized selector sent to instance 0x60800004b040 
2016-11-01 21:46:55.310 iTunesScriptingBridgeExample[11117:1091018] (
    0 CoreFoundation      0x00007fff9a8ca4f2 __exceptionPreprocess + 178 
    1 libobjc.A.dylib      0x00007fff8f6e2f7e objc_exception_throw + 48 
    2 CoreFoundation      0x00007fff9a9341ad -[NSObject(NSObject) doesNotRecognizeSelector:] + 205 
    3 CoreFoundation      0x00007fff9a83a571 ___forwarding___ + 1009 
    4 CoreFoundation      0x00007fff9a83a0f8 _CF_forwarding_prep_0 + 120 
    5 iTunesScriptingBridgeExample  0x00000001000012a5 -[ViewController btnClicked:] + 197 
    6 libsystem_trace.dylib    0x00007fff89e9c07a _os_activity_initiate + 75 
    7 AppKit        0x00007fff8a9a2dbd -[NSApplication sendAction:to:from:] + 460 
    8 AppKit        0x00007fff8a9b4f12 -[NSControl sendAction:to:] + 86 
    9 AppKit        0x00007fff8a9b4e3c __26-[NSCell _sendActionFrom:]_block_invoke + 131 
    10 libsystem_trace.dylib    0x00007fff89e9c07a _os_activity_initiate + 75 
    11 AppKit        0x00007fff8a9b4d99 -[NSCell _sendActionFrom:] + 144 
    12 libsystem_trace.dylib    0x00007fff89e9c07a _os_activity_initiate + 75 
    13 AppKit        0x00007fff8a9b33be -[NSCell trackMouse:inRect:ofView:untilMouseUp:] + 2693 
    14 AppKit        0x00007fff8a9fbf04 -[NSButtonCell trackMouse:inRect:ofView:untilMouseUp:] + 744 
    15 AppKit        0x00007fff8a9b1ae8 -[NSControl mouseDown:] + 669 
    16 AppKit        0x00007fff8af063c9 -[NSWindow _handleMouseDownEvent:isDelayedEvent:] + 6322 
    17 AppKit        0x00007fff8af073ad -[NSWindow _reallySendEvent:isDelayedEvent:] + 212 
    18 AppKit        0x00007fff8a946539 -[NSWindow sendEvent:] + 517 
    19 AppKit        0x00007fff8a8c6a38 -[NSApplication sendEvent:] + 2540 
    20 AppKit        0x00007fff8a72ddf2 -[NSApplication run] + 796 
    21 AppKit        0x00007fff8a6f7368 NSApplicationMain + 1176 
    22 iTunesScriptingBridgeExample  0x0000000100001322 main + 34 
    23 libdyld.dylib      0x00007fff8e6595ad start + 1 
    24 ???         0x0000000000000003 0x0 + 3 
) 

誰も私がここで間違っているかもしれないものをお勧めてもらえますか?

種類はみなし:)

答えて

0

ITunesTrackcommitEditingの性質や実装を持っていません。

commitEditingは、NSEditorプロトコルの一部です。

NSEditorの非公式プロトコルは、コントローラとユーザーインターフェイス要素によって実装されています。受信者が保留中の編集をコミットまたは破棄するように要求するための手段を提供します。

これらのメソッドは、通常、コントローラによってユーザーインターフェイス要素で呼び出されます。また、ユーザーが文書を保存したり、アプリケーションを終了しようとした場合に、コントローラに送信することもできます。

NSControllerは、バインディングをサポートするApplication Kitのユーザーインターフェイス要素と同様に、このプロトコルの実装を提供します。

関連する問題