Applescript:変数と文字列の比較に失敗しました


11

私はアイテムのリストを取得してそれらを反復するアップルスクリプトを持っています:

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、2014

また、参照を強制する代わりに、逆参照することもできます(そのcontentsプロパティを要求します)。またはのcontents of currentName is equal to …ASLGを参照してください。referencea reference to
Chris Johnsen、2014年

as stringオペレーターを使用して、私が抱えていた問題を修正しました
18:08
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.