Xcode AppleScript:更改变量标签的内容

时间:2016-11-30 14:06:30

标签: xcode variables applescript plist

这是我的剧本:

property MyLabel : missing value

on buttonClicked_(sender)
    set the plistfile_path to "~/Desktop/MY_DATA.plist"
    tell application "System Events"
        set p_list to property list file (plistfile_path)
        -- read the plist data
        set theMyDataFromPlist to value of property list item "DATA1" of p_list

         end tell
end buttonClicked_
  

这将从plist中获取我想要的数据并设置在变量(theMyDataFromPlist)中。

如何在标签上打印此变量" MyLabel"并在数据更改时自动刷新脚本?

另外,当我点击文本(或其他按钮)时,我可以将值复制到剪贴板。 (set the clipboard to theMyDataFromPlist会工作吗?)

我也想知道可以用Swift做同样的事情吗?

1 个答案:

答案 0 :(得分:1)

  

如何在“MyLabel”标签上打印此变量

您想在哪里打印变量?您可以使AppleScript显示一个对话框:

set variable to 42
display dialog "The value of variable is " & variable

AppleScript并非设计为终端语言,而是用于UI脚本,因此它不像大多数脚本语言那样提供打印,因为用户可以看到打印值。

  

并在数据更改时自动刷新脚本?

不太清楚你在这里期待什么。只要文件内容发生变化,您的系统就会神奇地运行您的脚本?这不会发生。您可以创建一个launchd作业并启动监视该文件,然后在文件更改时执行您的脚本;这在这里描述:

https://discussions.apple.com/message/13182902#13182902

但是某些进程必须监视文件,如果你的脚本应该这样做,它必须一直运行,不停。然后,您可以每X秒运行一次代码,检查文件的最后修改日期,每当更改时,重新读取plist。这种民意调查非常难看,但是AS可以开箱即用。

BTW其余的在哪里?你说

  

另外,当我点击文字(或其他按钮)时,   我可以将值复制到剪贴板。

哪个文字?哪个按钮?听起来像你有一个完整的应用程序,但你向我们展示的是11行脚本代码。你甚至没有提到你有一个UI的整个应用程序。你的问题以“这是我的剧本”开头,所以你听起来就像这11行一样。

  

(会将剪贴板设置为myMyFromPlist吗?)

你为什么不试试呢?将该行粘贴到ScriptEditor中所花费的时间与询问此问题的时间相同。我刚尝试过,结果证明你只能设置字符串。

此代码不起作用:

-- bad code
set variable to 42
set the clipboard to variable

但是这段代码确实有效:

-- good code
set variable to 42
set the clipboard to "" & variable
  

我也想知道可以用Swift做同样的事情吗?

就我个人而言,我甚至不会考虑在AppleScript中编写应用程序;在我这样做之前,我宁愿停止编写代码。当然,这可以在Swift或Obj-C中完成。你在AS中可以做的一切都可以用其他两种语言来完成而不是,相反的情况并不成立。

使用Obj-C或Swift,您还可以使用GCD和GCD监视文件,以便进行更改。看看

https://stackoverflow.com/a/11447826/15809