UWP - 如何完全删除LocalSettings中写入的所有数据?

时间:2017-09-12 12:46:09

标签: uwp application-data

我正在使用UWP应用,我需要将数据存储为设置。

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

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

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

1 个答案:

答案 0 :(得分:4)

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

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

创建ApplicationDataContainer:

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

将设置添加到容器:

container.Values[Key] = Value;

删除容器:

LocalSettingsContainer.DeleteContainer("containerName");

PS:请注意,如果容器中有任何子容器,您将要删除指定容器中的设置以及子容器将被删除。 有关本地设置的更多信息,请参阅documentation.

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

var containerSettings = (ApplicationDataContainerSettings)ApplicationData.Current.LocalSettings.Values;
var keys = containerSettings.Keys;