Applescript - помните состояние между казнями? - PullRequest
0 голосов
/ 27 марта 2020

Некоторые используемые мной приложения имеют запоминаемое состояние между выполнениями, например, местоположение для диалогов Open / Save.

Теперь я написал AS, который принимает строку как ввод от пользователя (через display dialog ). Я бы хотел, чтобы скрипт запомнил эту строку между выполнениями. Возможный? Как?

1 Ответ

0 голосов
/ 27 марта 2020

Если вы сделаете строку свойством, она будет помнить эту строку между выполнениями до следующего открытия и повторного сохранения сценария .

Вот пример:

property myName : ""

if myName is "" then
    display dialog "What is your name?" default answer ""
    set myName to the text returned of the result
end if

display notification "Hello, " & myName

Сохраните сценарий как «Приложение», «Сценарий» или «Пакет сценариев». Если сохранить его как «Текст» (или запустить из редактора скриптов), он не будет поддерживать свойства между запусками.

При первом запуске он заметит, что myName - пустая строка, и запросит ваше имя .

При последующем его запуске ваше имя будет уже указано в свойстве myName.

Если вы снова откроете сценарий, а затем зарезервируете сценарий, будут сброшены все свойства. Если вам нужен сценарий для сохранения данных путем редактирования, вам нужно сохранить его в базе данных, которая может быть такой же простой, как текстовый файл в центральном местоположении.

set nameFile to POSIX file "/Users/USERNAME/name.txt"

tell application "Finder"
    if exists nameFile then
        set nameFileHandle to open for access nameFile
        set myName to read nameFileHandle
        close access nameFileHandle
    else
        display dialog "What is your name?" default answer ""
        set myName to the text returned of the result
        set nameFileHandle to open for access nameFile with write permission
        write myName to nameFileHandle
        close access nameFileHandle
    end if
end tell

display notification "Hello, " & myName

В этом случае переменная nameFile не должен быть свойством, так как он никогда не изменяется. Поскольку эта версия не должна быть свойством, ее также не нужно сохранять как нетекстовую, и ее даже можно запускать из редактора сценариев.

Это также очень просто; если вам нужно сохранить и извлечь несколько элементов, вам нужно будет следить за разделом «Чтение / запись файла» в «Стандартных дополнениях». Вы можете получить его из редактора скриптов в разделе «Файл: Открыть словарь…».

Для более сложной памяти вы можете найти «Список свойств» в словаре «Системные события» полезным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...