Applescript: So sánh biến với chuỗi là thất bại


11

Tôi có một applescript lấy danh sách các mục và sau đó lặp lại chúng:

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

Các namesbiến được thiết lập để một mảng của chuỗi đúng cách. Khi tôi lặp lại danh sách, tôi có thể nhận được từng currentNamebiến được trả lại riêng mà không gặp sự cố.

Vấn đề mà tôi gặp phải là câu lệnh if. Tôi không bao giờ nhận được hộp thoại hiển thị "tìm thấy nó".

Tôi cũng đã thử so sánh if (currentName = "Top_CPU_Processes") thenvà nó vẫn chưa bao giờ được đánh giá là đúng.

Có điều gì tôi cần phải làm để có nội dung của biến đánh giá theo chuỗi không?

Câu trả lời:


10

Khi bạn có một danh sách / mảng các biến và bạn lặp lại (lặp lại) chúng, bạn sẽ nhận được các tham chiếu đến từng mục - chẳng hạn như "mục 1 của tên". Nói cách khác, bạn không trực tiếp nhận được giá trị, bạn có được một con trỏ tới mục trong mảng. Bạn phải ép buộc tham chiếu vật phẩm với giá trị thực của nó để so sánh nó.

Hãy thử: if ((currentName dưới dạng chuỗi) bằng "Top_CPU_Processes) thì

Ngoài ra, nếu bạn đang sử dụng Trình gỡ lỗi tập lệnh, sẽ dễ dàng hơn để xem những gì diễn ra với tập lệnh, nó có khả năng gỡ lỗi tốt hơn nhiều so với Trình soạn thảo Applescript.


Tuyệt vời, cảm ơn đã chỉ ra rằng. Ngoài ra, điểm tốt lại: sử dụng bảng điều khiển trở lại so với hộp thoại hiển thị. Tôi chủ yếu làm điều đó bởi vì tôi nghĩ rằng tôi đã in không đúng vào bảng kết quả return "found it"vì nó không bao giờ được in. Tôi sẽ trở lại return.
Chris Schmitz

Ngoài ra, thay vì ép buộc tham chiếu, bạn chỉ có thể hủy đăng ký tham chiếu (yêu cầu thuộc tính của nó contents): contents of currentName is equal to …Xem ASLG trên referencehoặc a reference to.
Chris Johnsen

Sử dụng các as stringnhà điều hành khắc phục sự cố Tôi đã có
có hương thơm
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.