Applescript: Membandingkan variabel ke string gagal

11

Saya memiliki sebuah applescript yang mendapat daftar item dan kemudian mengulanginya:

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

The namesvariabel akan diatur ke array dari string dengan benar. Ketika saya ulangi daftar saya bisa mendapatkan masing-masing currentNamevariabel dikembalikan secara terpisah tanpa masalah.

Masalah yang saya hadapi adalah pernyataan if. Saya tidak pernah mendapatkan kotak dialog yang menampilkan "menemukannya".

Saya sudah mencoba perbandingannya if (currentName = "Top_CPU_Processes") thenjuga dan itu masih belum pernah dievaluasi sebagai benar.

Apakah ada sesuatu yang perlu saya lakukan agar isi dari variabel mengevaluasi terhadap string?

Chris Schmitz
sumber

Jawaban:

10

Ketika Anda memiliki daftar / array variabel dan Anda mengulanginya, Anda mendapatkan referensi untuk setiap item - seperti "item 1 nama". Dengan kata lain, Anda tidak secara langsung mendapatkan nilai, Anda mendapatkan pointer ke item dalam array. Anda harus memaksa referensi item ke nilai sebenarnya untuk membandingkannya.

Coba: jika ((currentName as string) sama dengan "Top_CPU_Processes), maka

Juga, jika Anda menggunakan Script Debugger, jauh lebih mudah untuk melihat apa yang terjadi dengan skrip, ia memiliki kemampuan debug yang jauh lebih baik daripada Editor Applescript.

Chris Paveglio
sumber
Luar biasa, terima kasih sudah menunjukkannya. Juga, poin bagus: menggunakan panel kembali vs dialog tampilan. Saya kebanyakan melakukan itu karena saya pikir saya mencetak ke panel hasil dengan salah return "found it"karena tidak pernah dicetak. Saya akan kembali ke return.
Chris Schmitz
Selain itu, alih-alih memaksa referensi, Anda bisa langsung merujuk (meminta contentspropertinya): contents of currentName is equal to …Lihat ASLG di referenceatau a reference to.
Chris Johnsen
Menggunakan as stringoperator memperbaiki masalah yang saya alami
harum