2010-08-05 58 views
0

我試圖從一個月開始創建一個應用程序,檢測iTunes的當前曲目以標記歌曲並計算bpm(通過錄音按鈕)Cocoa SBridge:如何獲得蘋果的返回值(複雜類型)

當用戶修改標籤的某個字段時,該軌道被鎖定在應用程序中:這意味着:如果iTunes currentTrack發生變化,我的應用程序將停留在上一個軌道上。

我的問題:我得到了上一首曲目的持久ID。我創建了一個applescript來獲取與這個持久ID相對應的曲目。但我沒有找到如何在應用程序的可可部分獲得這個軌道!

這裏的腳本:

on open param 
    tell application "iTunes" 
     set trackItems to (every track of playlist "Library" whose persistent ID is param) 
     repeat with aTrack in trackItems 
      return aTrack 
     end repeat 
     return null 
    end tell 
end open 

在可可一邊,

NSAppleEventDescriptor *desc = [findTrackWithPersistentIDScript runWithParameters: [NSArray arrayWithObjects: lockPersistentID ,nil]]; 

我能做些什麼與NSAppleEventDescriptor?我想要一個iTunesTrack或iTunesFileTrack。我通過顯示對話框驗證該軌道是否被發現

感謝您的閱讀和幫助! PS:當我調試時,如果我做[desc數據],我有一個NSContreteData和一個iTunesItem下面。但我不知道如何獲得這個iTunesItem(我嘗試過演員......),並且我設法得到它,我該怎麼做才能擁有iTunesTrack。

回答

0

在applescript和obj-c之間來回轉換字符串很容易。所以我的消化會只是來回傳遞字符串。例如,你不可能對可可中的「軌道」做任何事情,所以不要把它傳回去,因爲你不需要它。請傳回曲目名稱。或者將持久性ID作爲文本傳回。或者傳回「真」意味着你找到了它或「假」,這意味着你找不到它。

然後在可可以得到applescript結果的NSString只需使用[result stringValue]。