Windows Phone 独立存储之IsolatedStorageSettings
Isolated Storage[独立存储]有两种方式在本地存储你的数据。第一是通过库中的键/值对,叫做IsolatedStorageSettings。第二是通过创建真实的文件和目录,叫做IsolatedStorageFile。
IsolatedStorageSettings允许你在一个字典中存储键/值对(注意,无需任何设定),然后再读取出来。这些数据会一直保存着,无论应用程序停止/启动,或者关机等等。除非你删除它,或者用户卸载你的应用程序,否则它一直存在。但是在它被添加到字典中之前是无法读取的。
IsolatedStorageSettings可提供一种将用户特定数据存储为本地 IsolatedStorageSettings中的键/值对的便捷方法。一种典型的用途是保存设置信息。并且这里所能保存的键值对中的“值”不只限于字符串,而且可以是一个实例化对象。下面就分别介绍如何存储字符串和实例化的对象。
一,字符串类型数据处理
1.保存键/值对
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.获取数据
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.定义对象
[DataContract]
public class UserInfo
{
[DataMember]
public String UserName { get; set; }
[DataMember]
public String BlogAddress { get; set; }
}
注意:此处必须使用[DataContract](数据契约)和[DataMember],只有这样序列化的对象的实例才可以保存到IsolatedStorageSettings中。使用[DataContract]需要添加引用System.Runtime.Serialization。
2.保存实例化对象
//获取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.获取存储的实例化对象
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/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。