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

Dashboard widget: getting version number from Info.plist

本文关键字:plist 获取 版本号 Info 小部 仪表板      更新时间:2023-09-26

我正在用Dashcode编写一个仪表板小部件,在背面,我有一个用于积分的字符串。我想在该字符串中包含小部件的版本号,但如果可能的话,我想以编程方式从 Info.plist 中的CFBundleVersionCFBundleShortVersionString键中获取它,以避免在更新小部件时不得不在多个位置更改数字。

到目前为止,对苹果开发者文档、谷歌和各种论坛的搜索都被证明是徒劳的。我想知道的是,是否有一种内置的方法可以做到这一点,Apple 包含但忘记提及(如var version = widget.version();或其他东西),或者我的脚本是否必须拉入并解析整个 plist,然后再提取我真正想要的一个值。

感谢您提供的任何帮助!

我似乎已经找到了答案:使用Dashcode的"数据源"工具在Info.plist中读取XML数据源。从那里,这篇博文向我展示了如何遍历 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
    }
}

由于 creditsLabeldiv 的文本已经以本地化字符串开头,因此我得到了一个漂亮的小标签,上面写着"版本 1.0"。