Win 8 LocalStorage 设置未保存

Posted

技术标签:

【中文标题】Win 8 LocalStorage 设置未保存【英文标题】:Win 8 LocalStorage settings not saved 【发布时间】:2013-06-26 11:14:53 【问题描述】:
ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;
localSettings.Values["stupidcrap"] = "test1";

然后在 Visual Studio 中重新启动应用程序后:

ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;
Debug.WriteLine(localSettings.Values["stupidcrap"]);

它什么也不打印(这意味着 Object 为空)。

为什么会这样?

当我这样做时:

ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;
localSettings.Values["stupidcrap"] = "test1";
Debug.WriteLine(localSettings.Values["stupidcrap"]);

它打印成功,但存储点是重新启动应用程序后保存的值可用....

为什么内存/存储/其他没有保存我的值?

【问题讨论】:

【参考方案1】:

当你想添加一个值时,你必须调用localSettings.Values.Add("key", "test1")

我使用以下类作为设置助手:

public class StorageSettingsApplication

    public StorageSettingsApplication()
    
        try
        
            localSettings = ApplicationData.Current.LocalSettings;
        
        catch (Exception)
        
        
    
    ApplicationDataContainer localSettings;
    publicTValue TryGetValueWithDefault<TValue>(string key, TValue defaultvalue)
    
        TValue value;

        // If the key exists, retrieve the value.
        if (localSettings.Values.ContainsKey(key))
        
            value = (TValue)localSettings.Values[key];
        
        // Otherwise, use the default value.
        else
        
            value = defaultvalue;
        

        return value;
    

    public bool AddOrUpdateValue(string key, object value)
    
        bool valueChanged = false;

        // If the key exists
        //if (localSettings.Contains(Key))
        if (localSettings.Values.ContainsKey(key))
        
            // If the value has changed
            if (localSettings.Values[key] != value)
            
                // Store the new value
                localSettings.Values[key] = value;
                valueChanged = true;
            
        
        // Otherwise create the key.
        else
        
            localSettings.Values.Add(key, value);
            valueChanged = true;
        

        return valueChanged;
    


【讨论】:

谢谢你的作品。奇怪的是,在 MSDN 的教程中,它说只需通过 localSettings.Values["asd"] = value; 我在这个确切的问题上浪费了我的生命,并在 MSDN 网页上留下了反馈,要求他们使用 localSettings.Values.Add(key, value) 行更新页面示例。跨度> 在我的情况下它仍然没有保存设置 @user3149172 你确定吗?确保在调试时不要强制关闭应用程序,强制关闭将丢弃所有更改。此代码在我的 6 个应用程序(Windows 8.1 和 Windows Phone)中完美运行 这是什么意思?我设置了密钥,然后在 VS 中设置了“暂停和关闭”。当我下次运行应用程序时,没有任何键。

以上是关于Win 8 LocalStorage 设置未保存的主要内容,如果未能解决你的问题,请参考以下文章

使用 WKWebView 时,localStorage 未保存在 iFrame 中

JavaScript 学习-49.localStorage前端保存数据

JavaScript 学习-49.localStorage前端保存数据

vue 中使用vuex和localStorage保存登录状态

ReferenceError: localStorage 未定义。在 Nextjs 中使用本地存储

js运行错误 无法获取未定义或 null 引用的属性“pagecount”