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?

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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.