2

我正在开发 UWP 应用程序,我需要将数据存储为设置。

我使用ApplicationData.Current.LocalSettings并在其中存储了简单数据和复合数据的混合。当我的应用程序用户想要结束其会话时,我希望删除之前存储的所有数据。我使用了ApplicationData.Current.ClearAsync()ApplicationData.Current.LocalSettings.Values.Clear()它似乎可以工作,但是当我检查存储这些设置的 settings.dat 文件时,我看到数据仍然存在,只有它们与密钥的连接被清除并使其不可用。

问题是从一个版本到另一个版本,在某些情况下我需要更改一些键,甚至停止使用其中一些键,而对于我描述的这个问题,与以前的键相关的数据将保留在 settings.dat 中,并且文件大小会随着时间的推移而增长.

我需要一个解决方案来让我完全清除 settings.dat 内容(或至少我在其中编写的内容)。

4

1 回答 1

5

您没有在此处清除本地设置。ApplicationDataContainer.Values 返回一个 PropertySet,Clear 方法对应于 Collection 类。所以它只清除你得到的集合而不是设置。您必须使用 Remove 方法基于键单独删除设置或使用 ApplicationDataContainer 来存储您的设置。您可以一次性删除存储在容器中的所有设置。按其键单独删除设置:

ApplicationData.Current.LocalSettings.Values.Remove("key");

创建应用程序数据容器:

var LocalSettingsContainer = ApplicationData.Current.LocalSettings;
var container = LocalSettingsContainer.CreateContainer("ContainerName", ApplicationDataCreateDisposition.Always);

将设置添加到容器:

container.Values[Key] = Value;

删除一个容器:

LocalSettingsContainer.DeleteContainer("containerName");

PS:请注意,如果容器中有任何子容器,您将要删除指定容器中的设置以及子容器将被删除。更多关于 localsettings 的信息可以在文档中找到。

编辑:您可以通过将 ApplicationDataContainer.Values 转换为具有 Keys 属性的 ApplicationDataContainerSettings 来获取ApplicationDataContainer中的键,您可以通过该属性单独删除设置。

var containerSettings = (ApplicationDataContainerSettings)ApplicationData.Current.LocalSettings.Values;
var keys = containerSettings.Keys;
于 2017-09-12T17:46:21.673 回答