OS X — JavaScript для автоматизации — Как создать и сохранить переменную для будущего использования

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

Я ищу способ создать переменную (расположение папки) с помощью открытого файлового браузера и сохранить эту переменную, чтобы пользователю не нужно было вводить ее в будущем.

Как я могу сохранить новую информацию в моей программе для будущего использования? Я исследовал использование файла plist, но нигде не могу найти документацию. Спасибо за вашу помощь!


person gnulinux    schedule 08.03.2016    source источник
comment
Я знаю, что вы используете JXA, но этот AppleScript показывает, как использовать plist. Вы должны быть в состоянии перевести его на JXA: обработка ошибок"> stackoverflow.com/questions/35734698/   -  person JMichaelTX    schedule 08.03.2016


Ответы (2)


Вы можете постоянно хранить простые значения в пользовательских настройках, используя класс NSUserDefaults из Cocoa.

Следующий сценарий просит пользователя выбрать расположение папки при первом запуске, а затем сохраняет выбранное расположение в пользовательских настройках по умолчанию. Когда сценарий запускается снова, он возвращает сохраненное местоположение без запроса пользователя. (Измените значения suiteName и locationKey в соответствии с вашим сценарием.)

var currentApp = Application.currentApplication()
currentApp.includeStandardAdditions = true

var suiteName = "your.suite.name";
var locationKey = "your.prefs.key";

var $ud = $.NSUserDefaults.alloc.initWithSuiteName(suiteName);
var $location = $ud.stringForKey(locationKey);
var locationPath = $location.isNil() ? currentApp.chooseFolder() : Path($location.js);
$ud.setObjectForKey($(locationPath.toString()), locationKey);

locationPath

Обратите внимание, что вы также можете взаимодействовать с настройками пользователя с помощью инструмента командной строки defaults, например:

defaults read your.suite.name your.prefs.key
defaults delete your.suite.name your.prefs.key
person bacongravy    schedule 18.03.2016

Я предложил использовать plist выше, но только что наткнулся на этот замечательный инструмент: JSON Helper

Это приложение, которое поддерживает сценарии. Примеры показаны на AppleScript, но их легко перевести на JXA.

JSON Helper — это агент (или фоновое приложение с поддержкой сценариев), который позволяет выполнять полезные действия с JSON (нотация объектов JavaScript) непосредственно из AppleScript. JSON Helper не имеет интерфейса и работает в фоновом режиме, ожидая, пока AppleScripts [или JXA] попросит его что-то сделать, как это делает собственная система событий Apple.

Помощник JSON содержит ряд команд, которые помогают разбивать JSON на обычные списки и записи AppleScript, а также преобразовывать списки и записи AppleScript обратно в действительный JSON. Кроме того, JSON Helper содержит несколько удобных команд, позволяющих легко взаимодействовать с веб-API.

person JMichaelTX    schedule 08.03.2016