多个仪表盘控件实例没有生存的小窗口更新。 什么办法防止这种?(Multiple Dashboar

2019-09-16 15:53发布

我已经写了一个Mac OS X的Dashboard,以显示自己和其他人的StackOverflow上的天赋。

我的问题是,每当我更新插件到新版本,先前的所有实例被删除,并在仪表盘创建一个新的实例。 所以,如果你以前遵循的4人的天赋,你将不得不重新创建控件和再次输入用户ID。 :(

有没有办法让所有正在运行的情况下,在更新窗口小部件?

检查首选项文件,我看到小工具的新版本部署后,将创建一个新的实例。 这是设计? 是否所有部件这样的工作,通过任何机会? 如果是的话,是否可以手动某种程度上规避?

你可以找到有问题的部件,包括项目文件,在http://widget.huxhorn.de

我已经改变了remove()方法来设置首选项为正确的值,而不是的代码的建议如下-但这并没有帮助,无论是。
什么是我的错? 救命! 我卡住了!


我的小部件的其他问题已得到修复:
我不小心叫

widget.preferenceForKey(null, dashcode.createInstancePreferenceKey(userIdPrefKey));

代替

widget.preferenceForKey(dashcode.createInstancePreferenceKey(userIdPrefKey));

但是这是现在固定的(尚未公布)。

Answer 1:

我知道这个工具,接管安装过程: http://junecloud.com/software/mac/smart-widget-installer.html


(来源: junecloud.com )



Answer 2:

我认为你对setPreferenceForKey和preferenceForKey调用看起来很奇怪。 在这情况下null从何而来。 难道他们不应该看起来像

widget.preferenceForKey(dashcode.createInstancePreferenceKey(userIdPrefKey))
widget.setPreferenceForKey(value, dashcode.createInstancePreferenceKey(userIdPrefKey));

是否与语法null

widget.setPreferenceForKey(null, dashcode.createInstancePreferenceKey(userIdPrefKey))

remove()删除偏好? 这可以解释你的情况我猜。 在更新remove()被称为surley因而对插件的喜好都不见了的重新启动。


我想只有一个更新的过程中,让您的喜好方式。 不依靠dashboard.createInstancePreferenceKey创建一个preferencekey而是认为唯一键值的自己。

在此preferenceKey然后你可以用成长(比如逗号分隔)列表保存所有曾经进入用户ID(通过任何实例)。 当构件实例被打开了的widget.preferenceForKey(dashcode.createInstancePreferenceKey(userIdPrefKey))尚未设置,你可以让用户选择其中的一个,给他一个选择或这样的事情

我只是想,也许更新过程不够好,喜好迁移到新的verison。 即使你不删除喜好我觉得widget.identifier(createInstancePreferenceKey)也会有变化的,所以你没法访问“旧”的设置。



文章来源: Multiple Dashboard widget instances don't survive widget update. Any way to prevent this?