2016-11-30 64 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