JCAppleScript 0.0.1

JCAppleScript 0.0.1

测试已测试
Lang语言 Obj-CObjective C
许可 MIT
Released最新发布2014年12月

无人认领 维护。



  • 作者:
  • John Clem

一个简单且有用的库,用于在捆绑的 AppleScript 或 OSAScript 中使用您的 Objective-C 变量。

简介

Apple 为 Cocoa 中的 AppleScript 提供了 NSAppleScript 和 OSAKit,但无法明确地从 Objective-C 代码中执行带有变量的脚本,除非您像这样执行一个长得离谱的 [NSString stringWithFormat:]

    NSString *scriptString = [NSString stringWithFormat:@"\
                              tell application \"Wirecast\"\n\
                              set myDoc to last document \n\
                              set desired_shot to the shot named \"%@\" of myDoc\n\
                              set normal_layer to the layer named \"normal\" of myDoc\n\
                              set the active shot of normal_layer to the desired_shot\n\
                              end tell", shotName];                              

JCAppleScript 旨在提供一种简单、合理的添加 AppleScript 文件到您的 App 拼接包并在执行它们之前(可选地)将您的Objective-C变量插入脚本的简单方法。

如果有额外的功能或改进,请继续发行和提交拉取请求。

开始使用

克隆仓库

$ git clone https://github.com/johnnyclem/JCAppleScript.git

将 JCAppleScript.h 和 JCAppleScript.m 文件拖到您的 Xcode 项目中,确保勾选将 JCAppleScript 添加到您的 App 的目标(s)

在您的 Objective-C 类中导入 JCAppleScript

#import "JCAppleScript

功能说明

  • 执行 NSString 作为 AppleScript
  • 从您的 App 的捆绑包中执行 .scpt 文件
  • 从您的 App 的捆绑包中执行包含NSString变量数组的关键east从您的 App 的捆绑包中执行 .scpt 文件,使用帶有NSString变量数组的惡差

尚未实现

  • 在 AppleScript 完成执行后返回变量和/或响应
  • 支持 OSAScript(除了 AppleScript 之外(我不确定区别是什么,但其他人注意到的 AppleScript 在一段时间后倾向于内存泄漏,而 OSAScript 不行)
  • 将变量传递给您的 AppleScript,除了 NSStrings(我不确定这是否可能,但如果这可行,会很好)

用法

在 Finder 中显示对话框窗口
[JCAppleScript appleScript:@"tell application \"Finder\"\n\
                             display dialog \"Hello World\"\n\
                             end tell"];
执行 App 拼接包中名为 MyScript.scpt 的 AppleScript
[JCAppleScript runAppleScript:@"MyScript"];
以变量执行 App 拼接包中名为 MyScript.scpt 的 AppleScript
在 MyScript.scpt
tell application "Finder"
    display dialog $0 $1
end tell
在你的 Objective-C 类中
NSArray *myVariables = [NSArray arrayWithObjects:@"Hello", @"World", nil];
[JCAppleScript runAppleScript:@"MyScript" withVariables:myVariables;