简体   繁体   中英

I'm not able to save to the isolated storage?

I'm trying to save my model in isolated storage:

var settings = IsolatedStorageSettings.ApplicationSettings;

CurrentPlaceNowModel model = new CurrentPlaceNowModel();

settings.TryGetValue<CurrentPlaceNowModel>("model", out model);

if (model == null)
{
    MessageBox.Show("NULL");
    settings.Add("model", new CurrentPlaceNowModel());
    settings.Save();
}
else
    MessageBox.Show("NOT NULL");

When I start the emu i ofcourse the "NULL", but why do I keep getting it if I close the app on the emu and start it again from the menu (NOT starting it again in Visual Studio).

Should I not get "NOT NULL" 2nd time around?

I'd do this differently and make a specific check to see if the key exists.

CurrentPlaceNowModel model; 

using (var settings = IsolatedStorageSettings.ApplicationSettings)
{
    if (settings.Contains("MODEL"))
    {
        model = settings["MODEL"] as CurrentPlaceNowModel;
    }
    else
    {
        model = new CurrentPlaceNowModel();
        settings.Add("MODEL", model);    
        settings.Save();
    }
}

This pattern of working with IsolatedStorage definitely works.

The only reason that this wouldn't work would be if CurrentPlaceNowModel could not be serialized with the DataContractSerializer. This is what the ApplicationSettings uses internally to serialize objects.
You can test this by serialising it this way yourself to see what happens.

I've just noticed what you've done wrong:

if (model == null)
{
    MessageBox.Show("NULL");
    settings.Add("model", model);
}

That's going to be equivalent to calling settings.Add("model", null) - so how would you expect to get a non-null value out later? I suspect you want:

CurrentPlaceNowModel model;

if (!settings.TryGetValue<CurrentPlaceNowModel>("model", out model))
{
    model = new CurrentPlaceNowModel();
    settings.Add("model", model);
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM