• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Problems with ScriptingBridge and iTunes
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Problems with ScriptingBridge and iTunes


  • Subject: Re: Problems with ScriptingBridge and iTunes
  • From: Adam P Jenkins <email@hidden>
  • Date: Sun, 2 Mar 2008 18:40:54 -0500

On Mar 2, 2008, at 6:16 PM, Adam P Jenkins wrote:

Just call the "get" method on the track object that currentTrack returns to get the iTunesFileTrack object. I.e. this works

iTunesFileTrack *currentTrack = [[iTunes currentTrack] get];
NSLog("location is %@", currentTrack.location);

The documentation for the "get" method from the SBObject.h header is:

// Evaluate the object by sending it to the target application. Depending on what
// the object points to, the result may be a Foundation object such as an NSString
// (for most properties), an NSAppleEventDescriptor (for properties of a type with
// no Foundation equivalent), or another SBObject (for most elements).


Another example of where you need to use it in the iTunes SB interface is when accessing iTunes.selection property, which returns an SBObject, but then if you call "get" on it, you get an NSCFArray of tracks, which is what you wanted in the first place. I'm not sure what the logic is behind the "get" method, but there it is.

I just read the detailed and very informative post that "has" just posted about AppleScript's event semantics and scripting bridge, and now I understand what the "get" method is for and why it needs to be called. This also made me realize that what I posted above isn't really safe since currentTrack won't always be a iTunesFileTrack. So really you'd want something like:


iTunesTrack *currentTrack = [iTunes.currentTrack get];
if ([currentTrack isKindOfClass:[iTunesFileTrack class]]) {
  iTunesFileTrack *fileTrack = (iTunesFileTrack*)currentTrack;
  NSLog("location = %@", fileTrack.location);
}


_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


References: 
 >Problems with ScriptingBridge and iTunes (From: Hannes Petri <email@hidden>)
 >Re: Problems with ScriptingBridge and iTunes (From: Adam P Jenkins <email@hidden>)

  • Prev by Date: Core Data opens files as empty
  • Next by Date: Subview bounds resizing when frame resizes
  • Previous by thread: Re: Problems with ScriptingBridge and iTunes
  • Next by thread: Re: Problems with ScriptingBridge and iTunes
  • Index(es):
    • Date
    • Thread