1

NSPopUpButton に ITunesPlaylist オブジェクトの配列を設定しようとしています。NSArrayController を NSPopUpButton にバインドしました

app = SBApplication.applicationWithBundleIdentifier("com.apple.iTunes")
playlists = app.sources.objectWithName("Library").userPlaylists

myArrayController.setContent playlists

すべてのプレイリストは NSPopUpButton に表示されますが、すべての名前には

<ITunesUserPlaylist:0x4018a5000: iTunesUserPlaylist 0 of iTunes Source "Library" of Application "iTunes" (51822)>

私がやりたいことは、ITunesPlaylist.name を NSPopUpButton のコンテンツ値にバインドすることですが、それを機能させることができないようです。

また、Scripting Bridge API 呼び出し (ITunesPlaylist、ITunesTrack など) によって返されるオブジェクトのクラス定義に関するドキュメントはほとんどないようです。

誰かが私にいくつかの指針を与えることができますか? 最終的には、ユーザーの iTunes プレイリストを階層形式で表示するドロップダウン メニューを作成したいと考えています。

4

2 に答える 2

1

適切なキーパスでバインディングを適切に設定しましたか?bridgesupportファイルもロードしましたか?ITunesUserPlaylistクラスを確認しましたが、KVCに準拠している必要があります。

playlists.first.valueForKey('name')

固有名を返します。

もう少しコードを共有すると、問題を調査できる可能性があります。

また、プレイリストで利用できるいくつかの方法は次のとおりです。

Class: iTunesPlaylist
Properties:
duration (the total length of all songs (in seconds))
name (the name of the playlist)
parent (folder which contains this playlist (if any))
shuffle (play the songs in this playlist in random order?)
size (the total size of all songs (in bytes))
songRepeat (playback repeat mode)
specialKind (special playlist kind)
time (the length of all songs in MM:SS format)
visible (is this playlist visible in the Source list?)

Method: tracks
Returned: SBElementArray
----
Method: moveTo:(SBObject *)to
Returned: void
Move playlist(s) to a new location
----
Method: searchFor:(NSString *)for_ only:(iTunesESrA)only
Returned: iTunesTrack
search a playlist for tracks matching the search string. Identical to entering search text in the Search field in iTunes.

Class: iTunesUserPlaylist
Properties:
shared (is this playlist shared?)
smart (is this a Smart Playlist?)

Method: fileTracks
Returned: SBElementArray
----
Method: URLTracks
Returned: SBElementArray
----
Method: sharedTracks
Returned: SBElementArray
----
于 2012-02-29T06:46:50.327 に答える
0

ご協力いただきありがとうございます。これらが私の問題であることが判明しました:

  1. XCode 4 Interface Builder は、最初に "iTunes.h" をプロジェクトにインポートしない限り、ArrayController の Class Name フィールドに "iTunesPlaylist" というタイプを認識しません。これを生成する必要がありました。

    $ sdef /Applications/iTunes.app | sdp -fh --basename iTunes

  2. 次に、XCode IBuilder の NSPopUpButton のコンテンツ バインディングで「Modal Key Path」を「name」に設定することで、ArrayController の ArrangeObjects の「name」にポップアップ ボタンをバインドできますが、「Raise for Not Application Keys」はデフォルトでチェックされていました。そのため、ArrayController が空だったため、アプリは起動時にクラッシュします。私はそれをオフにし、すべてが正常に動作します

于 2012-03-02T03:42:01.713 に答える