如何从AppleScript访问Cocoa AppleScript应用程序中的捆绑文件?
在AppleScript中,我习惯于调用:如何从AppleScript访问Cocoa AppleScript应用程序中的捆绑文件?,cocoa,applescript,applescript-objc,Cocoa,Applescript,Applescript Objc,在AppleScript中,我习惯于调用: set audio_file to (path to me as string) & "Contents:Resources:Audio:Music.mp3" display dialog "Path: " & (quoted form of POSIX path of audio_file) 我现在在Xcode中的Cocoa AppleScript项目中有了这段代码。它编译得很好,但脚本根本没有运行。对话框从未显示 如果没有(以字符
set audio_file to (path to me as string) & "Contents:Resources:Audio:Music.mp3"
display dialog "Path: " & (quoted form of POSIX path of audio_file)
我现在在Xcode中的Cocoa AppleScript项目中有了这段代码。它编译得很好,但脚本根本没有运行。对话框从未显示
如果没有(以字符串形式指向我的路径)
它可以工作,但是没有路径。“以字符串形式指向我的路径”似乎是正确的,但可能还有两个问题。1) 音频文件的路径应包含“内容”,而不是“内容”。2) 在显示对话框中,您不需要“引用表单”,因为posix path是一个字符串,可以毫无问题地添加到“path:”字符串中。因此,检查这两件事,看看它是否有帮助
编辑:
如果上面的内容没有帮助,那么有一种“cocoa”方法可以获取应用程序的路径。我不知道applescript objc语法,但这就是通过cocoa方法获取路径的方式
NSString* appPath = [[NSBundle mainBundle] bundlePath];
要直接获得资源的路径,请使用此
NSString* resourcePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp3"];
答案是,在Cocoa AppleScript应用程序中,正确的轴不是:
(path to me as text)
但是:
me
作为自引用无效。正确的是当前应用程序
希望这对其他人有所帮助:)不过对于简单的情况,您可以将文件放在XCode项目中文件树的根级别,然后执行以下操作:
set theFilePath to (path to resource "SomeFile.ext")
就我而言,我正在做:
tell application "Finder"
open theFilePath
end tell
并在其关联的应用程序中打开
分发应用程序时,“SomeFile.ext”会出现在应用程序包的Resources文件夹中
不完全确定如何指定子文件夹,因为到目前为止我还不需要它,但我想应该是这样
(指向资源“Audio:SomeFile.mp3”的路径)
?对于我使用的资源文件:
set fname to POSIX path of (path to resource "filename")
我发现问题在于路径的“我”部分是字符串。如果我使用主文件夹的路径作为字符串,它就可以工作。现在的子问题是“如果我不能使用我,如何自引用脚本文件夹?”答案是,在Cocoa AppleScript应用程序中,正确的轴不是:
(路径为文本)
,而是:(以文本形式指向当前应用程序的路径)
me作为自引用无效。正确的是当前应用程序。希望这对其他人有所帮助:)“Content”是编写问题时出现的错误。我同意您的说法(以字符串形式指向我的路径)似乎是正确的。但是:display dialog(以文本形式指向我的路径)
在Cocoa AppleScript中不起作用,问题是me,因为显示对话框(以文本形式显示主文件夹的路径)
起作用。我在帖子的“编辑”部分添加了一些Cocoa代码,这可能会有所帮助。AFAIK您不能在.AppleScript脚本中混合Cocoa:(当然可以。您的问题表明它是一个Cocoa Applescript应用程序。因此,我假设您正在用Cocoa编写它,并在其中运行Applescript代码。因此,您可以计算Cocoa中的appPath,并将其作为参数传递给Applescript处理程序。
set fname to POSIX path of (path to resource "filename")