Applescript: сбой сравнения переменной со строкой

11

У меня есть appleScript, который получает список элементов, а затем перебирает их:

tell application "GeekTool Helper"
    set names to name of geeklets

    repeat with currentName in names
        if (currentName is equal to "Top_CPU_Processes") then
            display dialog "found it"
        end if
        return currentName
    end repeat
end tell

namesПеременная получает значение массива строк правильно. Когда я повторяю список, я могу получить каждую из currentNameпеременных, возвращаемых отдельно, без проблем.

Проблема, с которой я сталкиваюсь - это утверждение if. Я никогда не получаю диалоговое окно, которое отображает "нашел его".

Я также попробовал сравнение, if (currentName = "Top_CPU_Processes") thenи оно никогда не оценивается как истинное.

Есть ли что-то, что мне нужно сделать, чтобы содержимое переменной сравнивать со строкой?

Крис Шмитц
источник

Ответы:

10

Когда у вас есть список / массив переменных и вы перебираете (повторяете) их, вы получаете ссылки на каждый элемент - например, «элемент 1 имен». Другими словами, вы не получаете значение напрямую, вы получаете указатель на элемент в массиве. Вы должны привести ссылку на элемент к его фактическому значению, чтобы сравнить его.

Попробуйте: если ((currentName как строка) равно "Top_CPU_Processes), то

Кроме того, если вы используете отладчик сценариев, гораздо проще увидеть, что происходит со сценарием, он гораздо лучше отлаживается, чем редактор приложений.

Крис Павельо
источник
Здорово, спасибо, что указал на это. Кроме того, хорошее замечание: использование панели возврата и диалогового окна дисплея. Я делал это в основном потому, что думал, что неправильно печатал на панели результатов, return "found it"потому что она никогда не печаталась. Я вернусь к return.
Крис Шмитц
Кроме того, вместо принудительной ссылки, вы можете просто разыменовать ее (запросить ее contentsсвойство): contents of currentName is equal to …см. ASLG на referenceили a reference to.
Крис Йонсен
Использование as stringоператора устранило проблему, которая у меня
возникла