zoukankan      html  css  js  c++  java
  • Windows Phone 独立存储之IsolatedStorageSettings

      Isolated Storage[独立存储]有两种方式在本地存储你的数据。第一是通过库中的键/值对,叫做IsolatedStorageSettings第二是通过创建真实的文件和目录,叫做IsolatedStorageFile
      IsolatedStorageSettings允许你在一个字典中存储键/值对(注意,无需任何设定),然后再读取出来。这些数据会一直保存着,无论应用程序停止/启动,或者关机等等。除非你删除它,或者用户卸载你的应用程序,否则它一直存在。但是在它被添加到字典中之前是无法读取的。
      IsolatedStorageSettings可提供一种将用户特定数据存储为本地 IsolatedStorageSettings中的键/值对的便捷方法。一种典型的用途是保存设置信息。并且这里所能保存的键值对中的“值”不只限于字符串,而且可以是一个实例化对象。下面就分别介绍如何存储字符串和实例化的对象。
      一,字符串类型数据处理
      1.保存键/值对

    View Code
     1             //获取IsolatedStorageSettings
    2 var settings = IsolatedStorageSettings.ApplicationSettings;
    3 //定义需要存储的键/值对
    4 String key = "username";
    5 String value = "宇之乐";
    6 //判断是否已经存在,存在修改,不存在添加
    7 if (settings.Contains(key))
    8 {
    9 settings[key] = value;
    10 }
    11 else
    12 {
    13 settings.Add(key, value);
    14 }
    15 //保存信息,如果不调用的话,重启后数据会丢失
    16 settings.Save();

      2.获取数据

    View Code
                String key = "username";
    String value = String.Empty;
    try
    {
    //从IsolatedStorageSettings获取字符串信息
    var settings = IsolatedStorageSettings.ApplicationSettings;
    bool isFind = settings.TryGetValue(key, out value);
    if (!isFind)
    {
    value = String.Empty;
    }
    }
    catch (System.Exception ex)
    {
    //未找到
    }


      二,实例化对象的处理
      1.定义对象

    View Code
        [DataContract]
    public class UserInfo
    {
    [DataMember]
    public String UserName { get; set; }
    [DataMember]
    public String BlogAddress { get; set; }
    }

      注意:此处必须使用[DataContract](数据契约)和[DataMember],只有这样序列化的对象的实例才可以保存到IsolatedStorageSettings中。使用[DataContract]需要添加引用System.Runtime.Serialization。
      2.保存实例化对象

    View Code
                //获取IsolatedStorageSettings
    var settings = IsolatedStorageSettings.ApplicationSettings;
    //定义需要存储的key
    String key = "username";
    //实例化对象
    UserInfo user = new UserInfo();
    user.UserName = "宇之乐";
    user.BlogAddress = "http://www.cnblogs.com/huizhang212/";
    try
    {
    //判断是否已经存在,存在修改,不存在添加
    if (settings.Contains(key))
    {
    settings[key] = user;
    }
    else
    {
    settings.Add(key, user);
    }
    //保存信息,如果不调用的话,重启后数据会丢失
    settings.Save();
    }
    catch (System.Exception ex)
    {
    //保存失败,如果保存的是未实例化的对象,会报异常
    }

      3.获取存储的实例化对象

    View Code
                String key = "username";
    UserInfo user = null;
    //从IsolatedStorageSettings获取字符串信息
    var settings = IsolatedStorageSettings.ApplicationSettings;
    if (settings.Contains(key))
    {
    user = settings[key] as UserInfo;
    }


    作者:宇之乐
    出处:http://www.cnblogs.com/huizhang212/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

     
  • 相关阅读:
    2.22
    LG P7077 函数调用
    2020/10/30 模拟赛 序列
    2020/10/27 模拟赛 数列
    2020/10/23 模拟赛 chip
    2020/10/23 模拟赛 escape
    2020/10/23 模拟赛 center
    LOJ#6581. 「ICPC World Finals 2019」断头路探测者
    LG P1587 [NOI2016]循环之美
    LG P4156 [WC2016]论战捆竹竿
  • 原文地址:https://www.cnblogs.com/huizhang212/p/IsolatedStorageSettings.html
Copyright © 2011-2022 走看看