在 Metro Style 应用程序中保存本地数据

Posted

技术标签:

【中文标题】在 Metro Style 应用程序中保存本地数据【英文标题】:Saving Local Data in Metro Style App 【发布时间】:2012-04-30 17:52:00 【问题描述】:

我想在 Windows 8 Metro 风格的应用程序中创建一个评分机制,并希望使用 Windows.Storage.ApplicationData 在本地保存该分数,因为我是 Visual Studio 和应用程序构建的新手,所以我很难过。

var applicationData = Windows.Storage.ApplicationData.current;

var localSettings = applicationData.localSettings;

// Create a simple setting

localSettings.values["totalPike"] = '0';

// Read data from a simple setting

var totalPike = localSettings.values["totalPike"];

if (!totalPike) 
    // No data

else 
    // Access data in value


// Delete a simple setting

localSettings.values("totalPike");

这就是 windows 处理来自 msdn 的应用数据的方式

$(document).ready(function () 

        var clicks = 99;

        $("#totalScoreTestButton").click(function () 
            totalPike = totalPike + clicks
            $("#totalScoreTest").text(totalPike);
        );
);

这是我当时用来将分数添加到总分数中的功能,但是每当我关闭应用程序并重新启动它时,都不会保存分数。有人可以帮助我吗?如果可能的话,请解释一下 Metro 应用程序如何处理本地数据?

【问题讨论】:

【参考方案1】:

例如:

(function () 
"use strict";

WinJS.Namespace.define("PersistenceManager", 
    stateFile: "game_state",

    saveState: function () 
        var state = 
            game_state: game_state,
            level: levelIndex,
            score: SCORE,
            playerLives: player_lives,
            compLives: comp_lives
        ;

        WinJS.Application.local.writeText(PersistenceManager.stateFile, JSON.stringify(state));
    ,

    loadStateAsync: function () 
        var app = WinJS.Application;

        return app.local.exists(PersistenceManager.stateFile).then(function (exists) 
            if (exists)
                return app.local.readText(PersistenceManager.stateFile).then(function (data) 
                    return JSON.parse(data);
                );
            else return null;
        );
    ,

);
)();

【讨论】:

感谢您的回答,但我使用 Windows.Storage.ApplicationData.current 来保存数据,所以我猜它会将文件保存在 .dll 或其他地方。 感谢分享此代码。它在应用程序(visual studio 2015 javascript Apache Cordova)的执行过程中运行良好,但它不会在调用中持续存在。保存数据OK,读取数据OK。关闭应用程序并再次启动,没有数据。我错过了什么?我最终使用了:window.localStorage.setItem(PersistenceManager.stateFile, JSON.stringify(state));并返回 JSON.parse(window.localStorage.getItem(PersistenceManager.stateFile));

以上是关于在 Metro Style 应用程序中保存本地数据的主要内容,如果未能解决你的问题,请参考以下文章

我可以在颤振应用程序中保存本地磁盘数据库吗?文档目录在哪里创建路径?

通过共享扩展从图库中保存照片时 NSData WriteToFile 失败

如何在核心数据中保存单个实体

如何在 Symfony2 中保存视图中的数据

在swiftui中保存照片?

在opencv中保存视频,按q后我的程序没有终止