OS X - 自动化JavaScript - 如何创建和存储变量以供将来使用

时间:2016-03-08 07:11:31

标签: macos jxa

我正在创建一个小程序,它将帮助自动化虚拟环境的初始化和Django服务器的启动。我想与其他人分享这个计划。

我正在寻找一种方法来创建一个变量(文件夹的位置),通过使用一个打开的文件浏览器并存储该变量,以便用户以后不必输入它。

如何在程序中存储新信息以备将来使用?我调查了plist文件的使用,但无法在任何地方找到任何文档。谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

我建议使用上面的plist,但我只是遇到了这个伟大的工具: JSON Helper

这是一款支持脚本编写的应用。示例以AppleScript显示,但应轻松转换为JXA。

  

JSON Helper是一个代理(或可编写脚本的后台应用程序)   允许您使用JSON(JavaScript Object Notation)执行有用的操作   直接来自AppleScript。 JSON Helper没有接口,可以运行   等待AppleScripts [或JXA]要求它做某事的背景,   就像Apple自己的系统事件一样。

     

JSON Helper包含一个   帮助您将JSON解析为常规AppleScript的命令数   列表和记录,并将AppleScript列表和记录转换回来   有效的JSON。此外,JSON Helper包含一些便利命令   允许您轻松与基于Web的API进行通信。

答案 1 :(得分:0)

您可以使用Cocoa中的NSUserDefaults类在用户首选项中持久存储简单值。

以下脚本要求用户在第一次运行时选择文件夹位置,然后将所选位置存储在用户的默认位置。再次运行脚本时,它会返回存储的位置而不会提示用户。 (根据您的脚本更改suiteNamelocationKey值。)

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