0

隔離保存設定で複数のデータを保存したのですが、その時にデータを取り出すと1つのデータしか表示されません

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 保存方式では、1 つのキーに対して 1 つの値しか存在できない」ということです。

単一のキーに対して複数の値を保存するには、次のようにします。


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 に答える