AppleScript Objective-C: Dealing with Paths
Saturday, 25 June 2011
Here are a couple of notes that might be helpful when dealing with paths in Cocoa-AppleScript applications in Xcode:
Getting the POSIX Path to Resources With Global Scope
If you need the POSIX path to the Resources folder in the App (for instance, if you intend to reference some resource files in a shell script) you need to do 2 things:
- Declare a property at the outset of the program to hold the variable, like so:
property pathToResources : "NSString"
- At startup (eg. in applicationWillFinishLaunching_) assign the appropriate address to the property:
set pathToResources to (current application's class "NSBundle"'s mainBundle()'s resourcePath()) as string
Getting Alias, aka Colon Path, From a POSIX Path
Now that you’ve got the POSIX path what do you do if you need to get the Alias instead (say, for example, to open a file with an application)? ApplescriptObjC has some inconsistencies compared to plain-jane Applescript when it comes to switching from POSIX to Aliases (going the other way works as expected, though). But the samplecode below works well. In it we’re appending the name of a resource to the pathToResource and getting Finder to open it with the default application:
set pathToFile to pathToResources & "/SomeFileToOpen.xyz" set pathToFile to (((pathToFile as text) as POSIX file) as alias) tell application "Finder" open pathToFile end tell log "File " & pathToFile & " Opened!"
Hope that helps somebody. That bit of info was gleaned by combing through the terrific info over at MacScripter