まず第一に、これはAppleScriptObjC
古い ではなく にあると想定していAppleScript Studio
ます。
IBOutlet
まず、テキスト フィールドを参照し、Objective-C コード (または AppleScript) がテキスト フィールドと通信できるようにするインスタンス変数 (またはプロパティ) である に相当する AppleScript を作成する必要があります。AppleScript スクリプトの先頭に向かって、次のような行を追加します。
script MDAppDelegate
property parent : class "NSObject"
property hostNameTextField : missing value -- add this line
次に、nib ファイル内のスクリプトのインスタンスからウィンドウ内のテキスト フィールドに Control キーを押しながらドラッグして、このアウトレットを「接続」します。
[更新]: 表示されているエラー メッセージから、このhostNameTextField
接続が nib ファイルで正しく設定されていないようです。
下の画像に示されている nib ファイルのMDAppDelegate
青い立方体アイコンは、実行時に nib ファイルがロードされたときに作成される AppleScript スクリプトのインスタンスを表しています。おそらく、ボタンから青色の AppleScript キューブへの「接続」は既に適切に確立されていると思われます。これにより、ボタンをクリックしたときにButtonHandlerVolumeSetting0_()
関数 (別名 AppleScript ハンドラー) を呼び出す必要があることが指定されます。下の画像のように青い AppleScript キューブ インスタンスを選択し、右クリック (または Control を押しながらクリック) して、青いキューブから入力テキスト フィールドにドラッグします。

マウス ボタンを離すと、テキスト フィールドに「接続」できるプロパティを示す黒いポップアップ パネルが表示されます。を選択しhostNameTextField
ます。

その後、青色の AppleScript キューブを選択すると、右側のユーティリティ領域の接続インスペクターで、AppleScript スクリプトの接続を確認できます。の下Outlets
にhostNameTextField
アウトレットが表示され、下Received Actions
に が表示されますButtonHandlerVolumeSetting0_()
。
AppleScript (Objective-C の に相当する AppleScript) ではプロパティhostNameTextField
が の初期値に設定されますが、実行時に nib ファイルでこの接続を行うことにより、 の値は指定した に設定されます。これにより、スクリプトと、nib ファイルにアーカイブされたオブジェクト階層との間の通信が可能になります。missing value
nil
hostNameTextField
NSTextField
【更新終了】
Anは、そのスーパークラスから名前がNSTextField
付けられたメソッドを継承します。このメソッドは、テキスト フィールドの内容を(AppleScript に相当する) として返します。したがって、ボタン クリック ハンドラー内では、次のように文字列値を取得できます。stringValue
NSControl
NSString
string
on ButtonHandlerVolumeSetting0_(sender)
set hostName to hostNameTextField's stringValue()
do shell script ("/usr/sbin/scutil --set HostName " & hostName) with administrator privileges
end ButtonHandlerVolumeSetting0_
を使用するときdo shell script
は、通常、スクリプト自体から を含めsudo
ずに、代わりにwith administrator privileges
修飾子を追加することをお勧めします。これは、昇格された特権でスクリプトを実行する必要があることを AppleScript に示し、標準の認証ダイアログの表示を処理します。