0

我在隔离存储设置中存储了多个数据,但是当时检索数据时只显示一个数据

我使用 for 循环,但它没有给出完美的输出

c#代码是:


    for (int i = 0; i <= IsolatedStorageSettings.ApplicationSettings.Count; i++)
    {
      cityname = IsolatedStorageSettings.ApplicationSettings["CityDetail"] as string;
      ads.Add(new Transaction(cityname));
    }

保存隔离存储设置的代码


 if (!setting.Contains("CityDetail"))
 {
   setting.Add("CityDetail", cityname);
 }
 else
 {
   setting["CityDetail"] = cityname; 
 }
 setting.Save();
4

1 回答 1

1

隔离存储使用键值对来保存数据。
因此,例如,如果您这样做:


 if (!setting.Contains("CityDetail"))
 {
   setting.Add("CityDetail", "abc");
 }
 else
 {
   setting["CityDetail"] = "abc"; 
 }
 setting.Save();

所以在这样做之后,键- CityDetail的abc

在此之后,如果您这样做:


 if (!setting.Contains("CityDetail"))
 {
   setting.Add("CityDetail", "def");
 }
 else
 {
   setting["CityDetail"] = "def"; 
 }
 setting.Save();

然后,键CityDetail的将被替换,新将是def。 本质是“在Key-Value存储方式中,一个key只能有一个value”。

要针对单个键保存多个值,您可以执行以下操作:


void addCityName(string cityName)
{
    List<string> existingList = getCityNames();
        if(existingList==null)
        {
             existingList = new List<string>();
             existingList.Add(cityName);
        }
        string json = JsonConvert.SerializeObject(exitingList);
        if(!IsolatedStorageSettings.ApplicationSettings.Contains("CityDetails"))
    {
        IsolatedStorageSettings.ApplicationSettings.Add("CityDetails",json);    
    }
    else 
    {
        IsolatedStorageSettings.ApplicationSettings["CityDetails"] = json;
    }
}

List<string> getCityNames()
{
    string json = IsolatedStorageSettings.ApplicationSettings["CityDetails"] as string;
    if(json == null)
        return null;
    JArray arr = JArray.parse(json);
        List<string> list = new List();
    for(int i=0; i < arr.length; i++)
    {
        list.add(arr[i].toString());
    }
    return list;
}

为此,您需要Json.Net库。

于 2012-09-04T05:49:37.343 回答