[CocosCreator]本地存儲(chǔ)踩坑記錄

之前用CocosCreator寫了一個(gè)小游戲,因?yàn)槲⑿判∮螒蛐枰浿韵胂劝l(fā)布到AppStore上,沒(méi)想到耗了一晚上踩了個(gè)坑,故記錄一下。

錯(cuò)誤日志(這是解決后復(fù)現(xiàn)的,錯(cuò)誤原因不一致,但是根源是一樣的):

ERROR: TypeError: null is not an object (evaluating 'this.localLevelsconfig.length'), location: src/project.js:93:50
STACK:
dataHandle@src/project.js:93:50
setup@src/project.js:100:16
src/project.js:115:8
src/cocos2d-jsb.js:28061:7
src/cocos2d-jsb.js:27955:7
src/cocos2d-jsb.js:36758:2
fireTimeout@jsb-adapter/jsb-builtin.js:2191:24
tick@jsb-adapter/jsb-builtin.js:2148:14

項(xiàng)目使用本地存儲(chǔ)通過(guò)信息,首次進(jìn)入游戲需要判斷本地存儲(chǔ)是否有記錄,然而let localData = cc.sys.localStorage.getItem(LocalKey);獲得的localData在CC編譯器中為空即可,可構(gòu)建成iOS項(xiàng)目時(shí),則需要判斷為null,所以導(dǎo)致首次處理本地存儲(chǔ)的邏輯沒(méi)有運(yùn)行,并且后續(xù)讀取本地儲(chǔ)存并不是我預(yù)設(shè)的數(shù)據(jù)結(jié)構(gòu)而導(dǎo)致的。

2020.12.19 更新
正確寫法:

let bossRecordCheck = cc.sys.localStorage.getItem(FMLocalBossRecordKey);
if (localData === '' || localData === null || localData === "") {
//表示數(shù)據(jù)為空,也就是首次打開
}

另一種寫法,還未測(cè)試:

let bossRecordCheck = cc.sys.localStorage.getItem(FMLocalBossRecordKey);
//如果為空,初始化
if (! bossRecordCheck) {
//表示數(shù)據(jù)不存在
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容