none
(WP8.1)ApplicationData.Current.LocalSettings中ApplicationDataContainer类型如何存储数据? RRS feed

  • 问题

  • 在运用本地存储过程中,出现个问题:
     1.定义一个键值对类型数据
    Dictionary<int, MyClass> dic = new Dictionary<int, MyClass>();

    2.再将dic添加到根容器中,

    ApplicationDataContainer rootContainer=ApplicationData.Current.LocalSettings;

    rootContainer.Values.Add("petDataKey", dic);

    可是在运行中,老是在第二步存储数据时出错,提示如下:
    WinRT 信息: Error trying to serialize the value to be written to the application data store
     “System.Exception”类型的异常在 mscorlib.ni.dll 中发生,但未在用户代码中进行处理
     WinRT 信息: Error trying to serialize the value to be written to the application data store
     其他信息: Data of this type is not supported.
    为什么?
    我用ApplicationDataCompositeValue类型存储键值对数据,也是报同样的错;
    如何解决,有上千条键值对数据如何存储在本地?
    2016年2月12日 13:30

答案

  • 您好,

    我说的是存储在应用文件里,比如说".txt"文件。

    // Create sample file; replace if exists.
    Windows.Storage.StorageFolder storageFolder =
        Windows.Storage.ApplicationData.Current.LocalFolder;
    Windows.Storage.StorageFile sampleFile =
        await storageFolder.CreateFileAsync("sample.txt",
            Windows.Storage.CreationCollisionOption.ReplaceExisting);

    更多关于创建应用文件的信息,请参考MSDN官方文档:https://msdn.microsoft.com/en-us/library/windows/apps/mt185401.aspx

    另外还请注意,请不要在一个帖子上提多个问题,请按照一个帖子一个问题的方式进行发帖,这样有利于其他的开发者在论坛上搜索到相关问题的答案,谢谢理解!


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.


    2016年2月15日 3:33
    版主

全部回复

  • 您好,

    应用设置所存储的数据是单个的数据类型对象,那么它并不是所有的类型都会支持,比如不支持集合对象,如果要将List<String>的对象存储到应用设置里面是会抛出异常信息的,还有自定义的对象也不支持。应用设置支持大多数winRT数据类型:

    数值类型:int,Double,UInt32等

    布尔类型:Boolean

    字符类型:string,Char16

    时间类型:DateTime,TimeSpan

    结构类型:GUID,Point,Size,Rect

    对于应用设置不支持的类型,有两种解决方案:一种是使用应用文件来存储,另一种是将数据序列化为一种受支持的数据类型,例如可将数据序列化为JSON,并将其作为字符串存储。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2016年2月15日 2:20
    版主
  • 按你说的,自定义类型如何存储在应用文件夹?

    能举个简单示例吗

    2016年2月15日 2:58
  • 您好,

    我说的是存储在应用文件里,比如说".txt"文件。

    // Create sample file; replace if exists.
    Windows.Storage.StorageFolder storageFolder =
        Windows.Storage.ApplicationData.Current.LocalFolder;
    Windows.Storage.StorageFile sampleFile =
        await storageFolder.CreateFileAsync("sample.txt",
            Windows.Storage.CreationCollisionOption.ReplaceExisting);

    更多关于创建应用文件的信息,请参考MSDN官方文档:https://msdn.microsoft.com/en-us/library/windows/apps/mt185401.aspx

    另外还请注意,请不要在一个帖子上提多个问题,请按照一个帖子一个问题的方式进行发帖,这样有利于其他的开发者在论坛上搜索到相关问题的答案,谢谢理解!


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.


    2016年2月15日 3:33
    版主
  • 知道了,谢谢

    2016年2月15日 5:12