Applescript: il confronto tra variabile e stringa non riesce


11

Ho un applecript che ottiene un elenco di elementi e quindi scorre su di essi:

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

La namesvariabile viene impostata correttamente su una matrice di stringhe. Quando ripeto l'elenco sono in grado di ottenere ciascuna delle currentNamevariabili restituite separatamente senza problemi.

Il problema in cui mi imbatto è l'istruzione if. Non visualizzo mai la finestra di dialogo che visualizza "trovata".

Ho provato anche il confronto if (currentName = "Top_CPU_Processes") thene non viene ancora valutato come vero.

C'è qualcosa che devo fare per valutare il contenuto della variabile rispetto alla stringa?

Risposte:


10

Quando si dispone di un elenco / matrice di variabili e si esegue l'iterazione (ripetizione) su di esse, si ottengono riferimenti a ciascun elemento, ad esempio "elemento 1 dei nomi". In altre parole, non si ottiene direttamente il valore, si ottiene un puntatore all'elemento nella matrice. Devi confrontare il riferimento dell'oggetto al suo valore reale per confrontarlo.

Prova: if ((currentName as string) è uguale "Top_CPU_Processes) allora

Inoltre, se stai usando Script Debugger, è molto più facile vedere cosa succede con lo script, ha una capacità di debug molto migliore rispetto a Applescript Editor.


Fantastico, grazie per averlo sottolineato. Inoltre, è utile ri: utilizzare il pannello di ritorno rispetto alla finestra di dialogo del display. Lo facevo principalmente perché pensavo di stampare in modo errato sul pannello dei risultati return "found it"perché non veniva mai stampato. Tornerò a return.
Chris Schmitz,

Inoltre, invece di forzare il riferimento, puoi semplicemente dereferenziarlo (chiedi la sua contentsproprietà): contents of currentName is equal to …vedi ASLG su referenceo a reference to.
Chris Johnsen,

Utilizzando l' as stringoperatore risolto il problema che stavo avendo
redolent
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.