在XCode中“告诉应用程序”

时间:2018-03-12 03:24:31

标签: xcode applescript

这里非常非常新手XCode,虽然我多年前用它来做他们以前称之为Applescript Studio的各种事情。

我正试图让Finder告诉我在我的应用上删除的文件的名称:

on |application|:theApp openFile:aFile
    display alert "123"
    tell application "Finder"
        set theName to (name of aFile)
    end tell
    display alert theName
end

显示“123”,但名称不是。我猜想我的语法错了 - 我看过Scripting Bridge,但这似乎是让我的应用程序能够响应来自其他脚本的苹果事件,这不是我想要的。

我很抱歉在原帖中偏离了可能的偏离主题的区域。我认为最好找到一个可以解决我自己的问题的地方,而不是每次我需要时都来寻求帮助; - )

有人可以帮我弄清楚如何让Finder告诉我文件的名称吗?

1 个答案:

答案 0 :(得分:1)

aFile是一个NSString,因此您可以使用Cocoa来解析aFile本身。你可以随时获得Cocoa的全部资源;涉及Finder是不必要的。但是你不能使用AppleScript 显示一个NSString;您必须先将其转换为AppleScript字符串。所以,例如:

set lpc to aFile's lastPathComponent()
display alert (lpc as string)

如果您必须使用AppleScript进行解析(例如要求Finder为您执行此操作),因为您以这种方式更舒服,那么只需先说aFile as string然后继续解析进一步生成的AppleScript字符串。例如:

set p to aFile as string
tell application "Finder"
    set f to POSIX file p as alias
    get name of f
    display alert result
end tell

然而,我认为这是一种非常愚蠢的做法;脚本化另一个应用程序是昂贵的,而直接使用Cocoa则不是。