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 as string)이 "Top_CPU_Processes)와 같은 경우

또한 스크립트 디버거를 사용하는 경우 스크립트의 진행 상황을 훨씬 쉽게 확인할 수 있으며 Applescript 편집기보다 디버그 기능이 훨씬 뛰어납니다.


그것을 지적 해 주셔서 감사합니다. 또한 좋은 점은 리턴 패널과 디스플레이 대화 상자를 사용하는 것입니다. 나는 결과 패널에 return "found it"인쇄되지 않았기 때문에 결과 패널에 잘못 인쇄한다고 생각했기 때문에 대부분 그렇게했습니다 . 로 돌아갑니다 return.
Chris Schmitz

또한 참조를 강제하는 대신 참조를 역 참조 할 수 있습니다 ( contents속성 요청 ). contents of currentName is equal to …ASLG on reference또는을 참조하십시오 a reference to.
Chris Johnsen

은 Using as string내가 가지고 있던 문제 해결 운영자
연상
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.