0

我编写了一个 Mac OS X 仪表板来展示你自己和其他人的 StackOverflow 天赋。

我的问题是,每当我将该小部件更新到新版本时,所有以前的实例都会被删除,并在仪表板上创建一个新实例。因此,如果您之前跟随 4 个人的风格,您将不得不重新创建小部件并再次输入他们的用户 ID。:(

有没有办法在更新小部件时保留所有正在运行的实例?

检查首选项文件,我看到在部署新版本的小部件后创建了一个新实例。这是设计使然吗?是否所有小部件都像这样工作?如果是这样,可以以某种方式手动规避吗?

您可以在http://widget.huxhorn.de找到相关的小部件,包括项目文件

我已经更改了 remove() 中的代码,以首选项设置为正确的值,而不是如下建议的null - 但这也无济于事。
我的错是什么??帮助!我被困住了!


我的小部件的另一个问题已修复:
我不小心调用了

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

代替

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

但这现在已修复(尚未发布)。

4

2 回答 2

1

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

替代文字
(来源:juncloud.com

于 2009-08-12T05:53:33.913 回答
0

我认为您对 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中,您可以使用不断增长的(比如逗号分隔)列表保存所有曾经输入的用户ID(通过任何实例)。当一个小部件实例打开并且widget.preferenceForKey(dashcode.createInstancePreferenceKey(userIdPrefKey))尚未设置时,您可以让用户通过给他一个选择或类似的东西来选择其中一个

我只是在想也许更新过程足够好,可以将首选项迁移到新版本。即使您不删除首选项,我认为 widget.identifier (createInstancePreferenceKey) 也会更改,因此您无法访问“旧”设置。

于 2009-06-21T08:19:26.377 回答