quick3.3 GameState本地存储问题

问题就是一般情况下是没有问题的,有很小的概率突然出现数据获取不到的情况
代码大概是这样的
function DataCtrl:init()
GameState.init(function(param)
local returnValue=nil
if param.errorCode then
print("###############" … param.errorCode)
if param.errorCode == GameState.ERROR_INVALID_FILE_CONTENTS then
print(“不合法的文件内容,即取出来的内容不是一个table”)
elseif param.errorCode == GameState.ERROR_HASH_MISS_MATCH then
print(“文件被人为更改过”)
elseif param.errorCode == GameState.ERROR_STATE_FILE_NOT_FOUND then
print(“文件不存在”)
else
print(“ERROR”)
end
else
print("@@@@@@@@ " … param.name)
if param.name == “init” then
if not io.exists(param.filename) then
_data = DATA_DEFAULT
self:saveData()
end
elseif param.name==“save” then
local str=json.encode(param.values)
str=crypto.encryptXXTEA(str, “123456”)
returnValue={data=str}
elseif param.name==“load” then
print("$$$$$$$$$$$$")
local str=crypto.decryptXXTEA(param.values.data, “123456”)
returnValue=json.decode(str)
print(type(returnValue))
end
end
return returnValue
end, “data.txt”,“12369”)

_data=GameState.load()

end

function DataCtrl:saveData()
GameState.save(_data)
end

这个DataCtrl:init()会在MyApp的ctor函数中调用

出现错误时按上面的print打出来的信息依次是:

@@@@@@@@ init

GameState.load() - get values from…

@@@@@@@@ load

$$$$$$$$$$$$

nil

由于print(type(returnValue))为nil 最护导致 _data为nil 所以数据加载没有成功

如果是有错误的话errorCode 是有值的就不会走到else语句下面 然而加载后发现returnValue

为nil

后来又出现过这种情况当param.name == "load"时 dump出param的值
param.values.data 是有加密后的值的

print crypto.decryptXXTEA 解密后的 str 值 为nil

现在在做的是一款单机游戏,数据都是用GameState保存在本地的,一旦丢失问题就大了!

找了好久也不知道是什么问题…

所以应该还是需要一套 sqlite 的东西

游戏都做完了突然出现一个这样的问题,好蛋疼…难道我真的得重新用数据库做本地数据保存这块的东西了. :6: 这要疯啊!

有没有人知道这个问题怎么解决啊!!!

这个问题还没解决