Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从AppleScript访问Cocoa AppleScript应用程序中的捆绑文件?_Cocoa_Applescript_Applescript Objc - Fatal编程技术网

如何从AppleScript访问Cocoa 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项目中有了这段代码。它编译得很好,但脚本根本没有运行。对话框从未显示 如果没有(以字符

在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")