2016-11-30 48 views
0

这里的哪些内容是我的脚本:Xcode中的AppleScript:更改标签变量

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

我如何可以打印在标签上“MyLabel”

如果你想打印变量这个变量?你可以做的AppleScript显示一个对话框:

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

的AppleScript的目的不是为终端的语言,它是UI的脚本,所以它不是最喜欢的脚本语言,只是提供了一个打印的用户会在哪里看到印有值。

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

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

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

但有些过程必须监控的文件,如果你的脚本应该这样做,它必须运行所有的时间,马不停蹄。然后你可以让一些代码每X秒运行一次,检查文件的最后修改日期以及每当更改时重新读取plist。这个轮询非常丑陋,但是AS可以做的最好的事情是开箱即用。

BTW其余的在哪里?你说

此外,当我点击文本(或另一个按钮), 我可以将值复制到剪贴板。

哪些文字?哪个按钮?听起来像你有一个完整的应用程序,但你给我们展示的是11行脚本代码。你甚至没有提到你有一个用户界面的整个应用程序。你的问题从“这是我的脚本”开始,所以你听起来像这11行是你所有的。

(将设置剪贴板theMyDataFromPlist工作?)

你为什么不干脆试试?将该行粘贴到ScriptEditor中的时间要长于询问此问题。我只是试了一下,结果你只能设置字符串。

此代码将无法正常工作:

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

但是这个代码工作:

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

我也想知道的是,可以做同样的斯威夫特?

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

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

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

+0

感谢您的答复,是的,但我是从网页中获取数据,(document.getElementsByClassName)不能被迅速或者至少是我被告知来完成。也仍然无法将我的数据设置到剪贴板,可能来自我的代码中的某些东西 –

+0

@KevinCork每个C和Obj-C API都可以在Swift中使用;真的是每一个API,你只需要在你的桥接头文件中包含头文件,以使Swift编译器知道该API(Apple的框架是模块,这些可以直接'导入Swift代码,比如'import dawin'例如,没有模块的东西仍然有一个头文件,这个文件可以包含在一个桥接头文件中)。做一个新的问题,在那里放一些实际的代码(不仅仅是11行无关的AppleScript),这里有人会在几分钟内向你展示Swift中的相同代码。 – Mecki

+0

@KevinCork关于设置剪贴板,如果你不给我看你的代码,那么我不能帮你,对不起。我仍然不知道你的问题中的AppleScript代码与所有这些有什么关系。它不包含'document.getElementsByClassName',也没有尝试写入剪贴板。如果你有不同的问题,就对SO做出不同的问题;请不要将很多不相关的问题放在一个问题中。 SO是用户帮助用户,并且只有当您一次提出一个问题时,其他用户才会发现您的问题,如果他们遇到类似问题并且可以从中获利。 – Mecki