2017-02-07 6 views
0

Я довольно новичок в applescript. Я пытаюсь изменить значение переменной, основанной на условии if. Пользователь выбирает время и в зависимости от того, в какое время они выбирают, изменяется переменная «время». Я получаю сообщение об ошибке «Конец строки не может идти после этого» «». Ссылаясь на цитаты, следующие за «0», но мне нужно, чтобы эти числа были установлены как строковые значения. Не уверен, что я здесь отсутствует, поэтому любая помощь приветствуетсяУстановить переменную внутри if/else statement?

property time : "12" 
choose from list {"12 am", "1 am", "2 am", "3 am", "4 am", "5 am", "6 am", "7 am", "8 am", "9 am", "10 am", "11 am", "12 pm", "1 pm", "2 pm", "3 pm", "4 pm", "5 pm", "6 pm", "7 pm", "8 pm", "9 pm", "10 pm", "11 pm"} with title "Time Selection" with prompt "What time would you like?" OK button name "This Time" cancel button name "Cancel" default items {"12 am"} 

if answer is equal to "12 am" then 
    set time equal to "0" 
else if answer is equal to "1 am" then 
    set time equal to "1" 
end if 

ответ

0

есть много вопросов:..

  • time зарезервированное слово не используйте его в качестве переменной
  • set ... equal to неправильно синтаксис, вы должны написать. set ... to.
  • answer не имеет отношения к результату choose from list.
  • И даже если первые три проблемы решены, choose from list возвращает список.

    property myTime : "12" 
    set answer to choose from list {"12 am", "1 am", "2 am", "3 am", "4 am", "5 am", "6 am", "7 am", "8 am", "9 am", "10 am", "11 am", "12 pm", "1 pm", "2 pm", "3 pm", "4 pm", "5 pm", "6 pm", "7 pm", "8 pm", "9 pm", "10 pm", "11 pm"} with title "Time Selection" with prompt "What time would you like?" OK button name "This Time" cancel button name "Cancel" default items {"12 am"} 
    if answer is false then return -- catch if nothing is selected 
    set answer to item 1 of answer -- flatten the list 
    if answer is equal to "12 am" then 
        set myTime to "0" 
    else if answer is equal to "1 am" then 
        set myTime to "1" 
    end if 
    
0

1) Вы не должны использовать "время" в качестве имени переменной. это зарезервированное слово в Applescript. например, выберите «myTime» в качестве имени переменной.

2) переменная «ответ» не определена в вашем скрипте. Результат «выбрать из списка» находится в переменной по умолчанию «текст возвращается». Эта переменная также может возвращать «ложь», если пользователь нажимает кнопку отмены вместо выбора в списке. для ясности сценария, лучше официально присвоить переменной

Затем сценарий становится:

set myResponse to choose from list {"12 am", "1 am", "2 am", "3 am", "4 am", "5 am", "6 am", "7 am", "8 am", "9 am", "10 am", "11 am", "12 pm", "1 pm", "2 pm", "3 pm", "4 pm", "5 pm", "6 pm", "7 pm", "8 pm", "9 pm", "10 pm", "11 pm"} with title "Time Selection" with prompt "What time would you like?" OK button name "This Time" cancel button name "Cancel" default items {"12 am"} 

set UserChoice to item 1 of myResponse 
set myTime to "" -- goods practice to initialise a variable 
if UserChoice is "12 am" then 
set myTime to "0" 
else if UserChoice is "1 am" then 
set myTime to "1" 
end if 
log myTime