我已经写了一个Mac OS X的Dashboard,以显示自己和其他人的StackOverflow上的天赋。
我的问题是,每当我更新插件到新版本,先前的所有实例被删除,并在仪表盘创建一个新的实例。 所以,如果你以前遵循的4人的天赋,你将不得不重新创建控件和再次输入用户ID。 :(
有没有办法让所有正在运行的情况下,在更新窗口小部件?
检查首选项文件,我看到小工具的新版本部署后,将创建一个新的实例。 这是设计? 是否所有部件这样的工作,通过任何机会? 如果是的话,是否可以手动某种程度上规避?
你可以找到有问题的部件,包括项目文件,在http://widget.huxhorn.de
我已经改变了remove()方法来设置首选项为正确的值,而不是空的代码的建议如下-但这并没有帮助,无论是。
什么是我的错? 救命! 我卡住了!
我的小部件的其他问题已得到修复:
我不小心叫
widget.preferenceForKey(null, dashcode.createInstancePreferenceKey(userIdPrefKey));
代替
widget.preferenceForKey(dashcode.createInstancePreferenceKey(userIdPrefKey));
但是这是现在固定的(尚未公布)。
我知道这个工具,接管安装过程: http://junecloud.com/software/mac/smart-widget-installer.html
(来源: junecloud.com )
我认为你对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?