2010-08-05 6 views
0

J'essaie depuis un mois de créer une application qui détecte la piste actuelle d'iTunes pour marquer la chanson et calculer le bpm (grâce à un bouton d'enregistrement) Lorsque l'utilisateur modifie l'un des champs de l'étiquette, la piste est verrouillée dans l'application: cela signifie: si iTunes currentTrack change, mon application reste sur la piste précédente.Cocoa SBridge: comment obtenir la valeur de retour (type complexe) de l'applescript

Mon problème: J'ai l'ID persistant de la piste précédente. J'ai créé un applescript pour obtenir la piste correspondant à cet identifiant persistant. Mais je ne trouve pas comment obtenir cette piste dans la partie cacao de l'application !!!!

ici le script:

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 

Sur le côté de cacao,

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

Que puis-je faire avec le NSAppleEventDescriptor? Je voudrais avoir un iTunesTrack ou iTunesFileTrack. Je vérifie avec une boîte de dialogue que la piste est bien trouvée

Merci pour votre lecture et pour votre aide! PS: quand je débogue, si je fais [desc données], j'ai un NSContreteData et en dessous d'un iTunesItem. Mais je ne sais pas comment obtenir ce iTunesItem (j'ai essayé une distribution ...) et j'ai réussi à l'obtenir, que puis-je faire avec un iTunesTrack.

Répondre

0

Il est facile de convertir des chaînes entre applescript et obj-c. Donc, ma suggestion serait de ne transmettre que des cordes d'avant en arrière. Par exemple, vous ne pouvez pas vraiment faire quoi que ce soit avec "la piste" dans le cacao, alors ne le passez pas en arrière parce que vous n'en avez pas vraiment besoin de toute façon. Renvoie le nom de la piste à la place. Ou renvoyez l'identifiant persistant en tant que texte. Ou repasser "vrai" signifie que vous l'avez trouvé ou "faux" ce qui signifie que vous ne pourriez pas le trouver.

Ensuite, dans le cacao pour obtenir la chaîne NSS du résultat de l'applescript, utilisez simplement [result stringValue].