quick-lua 数据存储

程序运行时,代码将加到内存上运行,代码运行到需要存储数据时,内存将要存储的数据储存到磁盘上,当代码运行到需要读取数据时,内存将磁盘上的数据读取出来。

Json数据:

一种数据交换格式,可将数据转换成字符串或者表。

local table_my =  {a=1,[5]=3}

local str = json.encode(table_my)  --编码,将Lua table数据编码为JSON字符串
    
local table_old = json.decode(str) --解码,将JSON字符串解码为Lua table数据

以上例子,编码后得到字符串,str = "{"a":1,"5":3}",一般存储数据时,可转换成Json字符串后存储。

当读取数据后,获得的是字符串,此时再将数据转换成table数据,以便于数据的提取。

数据的存取:

方法一:

io.writefile(configFile,str)           --configFile为存取路径

io.readfile(configFile)

例子:

local configFile = device.writablePath.."hxgame.config"    --存放路径

local str = string.format("do local grid,bestScore,totalScore,WINSTR,isOver \
                              =%s,%d,%d,\'%s\',%s return grid,bestScore,totalScore,WINSTR,isOver end",
                              gridstr,bestScore,totalScore,WINSTR,isOverstr)
io.writefile(configFile,str)      --将str以代码块的形式存储
end

function MainScene:loadStatus()
    if io.exists(configFile) then
        local str = io.readfile(configFile)
        if str then
            local f = loadstring(str)
            local _grid,_bestScore,_totalScore,_WINSTR,_isOver = f()   --运行此代码块
            if _grid and _bestScore and _totalScore and _WINSTR then
                grid,bestScore,totalScore,WINSTR,isOver = _grid,_bestScore,_totalScore,_WINSTR,_isOver
            end
        end
    end
end

方法二:

cc.UserDefault:getInstance():getStringForKey(key,value)  --value为字符串

cc.UserDefault:getInstance():setIntegerForKey(key,value)  --value为整数

例子:

local table = {
	 id = 55,
     name = "david",
     score = 100,
}
local str_table = json.encode(table)     --将table转换为字符串
cc.UserDefault:getInstance():setStringForKey("str_table",str_table)    --存储此字符串
local str2 = cc.UserDefault:getInstance():getStringForKey("str_table") --读取此字符串
local table2 = json.decode(str2)            --将字符串再转换table

猜你喜欢

转载自blog.csdn.net/Super_Cola/article/details/81272214
今日推荐