3

我不知道该叫什么标题,但我正在开发一个 Applescript,它可以从 iTunes 中提取/推送信息并保存它。在我的 Applescript 开发过程中,我想如果我要学习一门语言,我会学习 Swift,因为我想在以后开发更高级的程序。尽管 Applescript 同样有用,而且我正在使用 Applescript 工作……我想在学习使用 Swift 开发程序和脚本方面迈出下一步。我希望能够使用 Swift 复制我在 Applescript 中所做的事情。

我想知道的是是否有关于如何从可访问性检查器/等读取数据的教程/指南以及像applescript这样的控制程序能够执行的操作等...

为了让您了解我在 Applescript 中所做的事情,它是Batch Apple ID Creator的一个非常基本的版本。我在一个小型学区工作,该学区现在使用 MDM 来管理 i 设备。好吧,使用 MDM,每台设备都需要拥有自己的 Apple ID,而手动创建 500 多个 Apple ID 并没有听起来那么有趣。这些是我在 Applescript 中重新创建的一些步骤。

  • 检查 iTunes 是否正在运行
  • 检查是否有当前用户登录。
  • 如果当前用户已登录,请单击菜单栏下的“退出”。
  • 转到“创建 Apple ID...”
  • 等等

我采用了该 Git repo 上的当前脚本并对其进行了一些更改,以便它可以与最新版本的 iTunes (12.1.2) 一起使用。在进行了一些更改之后,我想我想学习并开始重写脚本以完全了解它的工作原理并学习 Applescript 语法。

如果您需要有关我正在尝试做的事情的更多信息,请告诉我。

索罗德尼

4

2 回答 2

6

我自己正在调查这种事情。令我惊讶的是,您可以将 Swift 用作脚本语言。我已经编写了几个使用简单的 'shebang' 行 #!/usr/bin/swift 的简短脚本

要访问 AppleScript 功能,您几乎必须从您的 Swift 代码中调用 AppleScript(通过 Cocoa)。

这是我在其他地方找到的一个例子:

SWIFT代码

let myAppleScript = "..."
var error: NSDictionary?
if let scriptObject = NSAppleScript(source: myAppleScript) {
    if let output: NSAppleEventDescriptor = scriptObject.executeAndReturnError(
                                                                       &error) {
        println(output.stringValue)
    } else if (error != nil) {
        println("error: \(error)")
    }
}

尝试搜索“从 Swift 调用 AppleScript”(或 Cocoa)或“从 Swift 调用 AppleEvents”(或 Cocoa)。

于 2015-05-30T12:07:15.327 回答
3

每种语言都有特定的用途。AppleScript 的优势在于通过 AppleEvents 编写进程间脚本,而 Swift 的优势在于编写大型全功能应用程序。使用 AppleScript,您可以使用 JavaScript 从 Safari 获取网页内容,使用 shell 脚本对其进行解析,然后使用 Mail 将其发送到电子邮件中。大多数语言都不能像在 AppleScript(包括 Swift)中那样轻松地做到这一点。它们是互补的。你可以通过学习两者来做出惊人的事情,但它们都有自己的局限性和优势。

于 2015-05-04T04:44:59.557 回答