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,但它仍然永远不会评估为真实。

我需要做些什么来使变量的内容针对字符串进行评估吗?

Answers:


10

当您有一个变量列表/数组并对其进行迭代(重复)时,您将获得对每个项目的引用-例如“名称的项目1”。换句话说,您没有直接获得值,而是获得了指向数组中该项的指针。您必须强制项目引用与其实际值进行比较。

试试:如果((currentName as string)等于“ Top_CPU_Processes),则

另外,如果您使用的是脚本调试器,则可以轻松查看脚本的内容,它的调试功能比Applescript编辑器要好得多。


太好了,谢谢你指出这一点。另外,要点很重要:使用返回面板与显示对话框。我之所以这样做主要是因为我认为自己return "found it"从未正确打印到结果面板,因为它从未打印过。我将返回return
克里斯·施密茨

另外,您也可以仅取消引用(要求其contents属性)而不必强制引用:contents of currentName is equal to …请参阅reference或上的ASLG a reference to
克里斯·约翰森

使用as string固定的,我遇到的问题运营商
散发出浓烈的
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.