#! /usr/bin/swift import ScriptingBridge @objc protocol iTunesTrack { optional var name: String {get} optional var album: String {get} } @objc protocol iTunesApplication { optional var soundVolume: Int {get} optional var currentTrack: iTunesTrack? {get} } extension SBApplication : iTunesApplication {} let app: iTunesApplication = SBApplication(bundleIdentifier: "com.apple.iTunes") // Because these are all optional properties (to avoid providing an implementation), we have // to use '!' to indicate we know the implementation exists. let track: iTunesTrack? = app.currentTrack! let album = track?.album! let trackName = track?.name! println("Current track: \(trackName) - \(album)")