горячее исправление «Невозможно сделать {кнопка возвращена:« Соединить », текст возвращен:« тест »} в текст типа Юникод». - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь создать небольшое приложение-автомат для подключения к беспроводной сети через терминал на устройстве ssh'd , где сеть может быть скрыта.

Ряд параметров приводит к возможности просто набрать SSID и подключить устройство.

set userSSID to display dialog "Type the SSID for the network you require below" buttons ["Connect", "Cancel"] default answer "" default button 1

            if button returned of result = "Cancel" then
                error number -128

            else

                if button returned of result = "Connect" then

                    tell application "Terminal"
                        set currentTab to do script ("networksetup -setairportpower en1 on")
                        delay 2
                        do script ("networksetup -setairportnetwork en1 '" & userSSID & "'") in currentTab
                    end tell
                end if

Я ожидаю, что оно подключится кSSID, как набрано, в данном случае «test», однако я получаю сообщение об ошибке:

В действии «Запустить AppleScript» обнаружена ошибка: «Can't make {button return:» Connect", текст возвращен:" test "} в текст типа Unicode.”

1 Ответ

1 голос
/ 03 июля 2019

display dialog возвращает запись {button returned, text returned} в качестве состояния ошибки.

Чтобы использовать значение text returned, вы должны написать

do script ("networksetup -setairportnetwork en1 '" & text returned of userSSID & "'") in currentTab

Однако в вашем коде есть некоторая избыточность, например, нажатие кнопки Cancel немедленно отменяет скрипт.

Код может быть уменьшен до

set {text returned:userSSID} to display dialog "Type the SSID for the network you require below" buttons ["Connect", "Cancel"] default answer "" default button 1
tell application "Terminal"
    set currentTab to do script ("networksetup -setairportpower en1 on")
    delay 2
    do script ("networksetup -setairportnetwork en1 '" & userSSID & "'") in currentTab
end tell

или, может быть, даже без Terminal.app

set {text returned:userSSID} to display dialog "Type the SSID for the network you require below" buttons ["Connect", "Cancel"] default answer "" default button 1
do shell script "networksetup -setairportpower en1 on"
delay 2
do shell script "networksetup -setairportnetwork en1 " & quoted form of userSSID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...