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.