仪表板小部件:从Info.plist获取版本号

时间:2012-05-01 21:29:00

标签: javascript macos widget dashboard dashcode

我正在Dashcode中编写一个Dashboard小部件,而在背面,我有一个信用卡的字符串。我想在该字符串中包含窗口小部件的版本号,但如果可能,我想以编程方式从Info.plist中的CFBundleVersionCFBundleShortVersionString键中获取它,以避免在多个位置更改数字我是否以及何时更新小部件。

到目前为止,对Apple的developer documentation,谷歌和各种论坛的搜索已经证明是徒劳的。我想知道的是,是否有一个内置的方法来做到这一点Apple包括但忘了提及(如var version = widget.version();或其他),或者我的脚本是否必须拉入并解析整个plist在取出我真正想要的一个值之前。

感谢您提供的任何帮助!

1 个答案:

答案 0 :(得分:1)

我似乎找到了答案:使用Dashcode的“数据源”工具将Info.plist作为XML数据源读取。从那里,this blog post向我展示了如何遍历plist的结构并获取正确的字符串(在本例中,文件中的第五个<string>元素,对应于CFBundleShortVersionString

我最终得到的功能:

function getWidgetVersion() {
    var dataSource = dashcode.getDataSource("infoPlist");
    var version = dataSource.selection().valueForKey("dict").valueForKey("string")[4]; // This line and the previous could probably be combined for the sake of brevity
    if (typeof(version) == 'string') {
        document.getElementById("creditsLabel").innerHTML += version; //I'll change this to just pass the number on
    }
}

由于creditsLabel div的文本已经使用本地化字符串启动,因此我得到了一个很好的小标签“1.0版”。