Applescript: Porównywanie zmiennej do łańcucha nie powiedzie się

11

Mam skrypt jabłkowy, który pobiera listę elementów, a następnie iteruje nad nimi:

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

namesZmienna zostaje ustawiona na tablicy ciągów poprawnie. Kiedy powtarzam listę, jestem w stanie uzyskać każdą currentNamezmienną oddzielnie bez problemu.

Problem, na który wpadam, to instrukcja if. Nigdy nie dostaję okna dialogowego, które wyświetla „znalazło”.

Próbowałem również porównania if (currentName = "Top_CPU_Processes") theni nadal nie ocenia się to jako prawdziwe.

Czy jest coś, co muszę zrobić, aby zawartość zmiennej była oceniana względem łańcucha?

Chris Schmitz
źródło

Odpowiedzi:

10

Gdy masz listę / tablicę zmiennych i iterujesz (powtarzaj) nad nimi, otrzymujesz odniesienia do każdego elementu - na przykład „element 1 nazw”. Innymi słowy, nie otrzymujesz bezpośrednio wartości, dostajesz wskaźnik do elementu w tablicy. Musisz wymusić odniesienie do przedmiotu do jego rzeczywistej wartości, aby go porównać.

Spróbuj: jeśli ((bieżąca nazwa jako ciąg) jest równy „Top_CPU_Processes), to

Ponadto, jeśli używasz Script Debugger, o wiele łatwiej jest zobaczyć, co się dzieje ze skryptem, ma znacznie lepszą zdolność debugowania niż edytor Applescript.

Chris Paveglio
źródło
Wspaniale, dziękuję za zwrócenie na to uwagi. Warto również zwrócić uwagę na: użycie panelu powrotu a okno dialogowe wyświetlania. Robiłem to głównie, ponieważ myślałem, że drukuję niepoprawnie na panelu wyników, return "found it"ponieważ nigdy nie drukowałem. Wrócę do return.
Chris Schmitz
Zamiast wymuszać odwołanie, możesz po prostu wyrejestrować je (zapytaj o jego contentswłaściwość): contents of currentName is equal to …Zobacz ASLG na referencelub a reference to.
Chris Johnsen
Za pomocą as stringoperatora naprawiłem problem, który miałem
ponury