这是我的剧本:
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做同样的事情吗?
答案 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监视文件,以便进行更改。看看