之前用CocosCreator寫了一個小游戲捉超,因為微信小游戲需要軟著,所以想先發(fā)布到AppStore上绍昂,沒想到耗了一晚上踩了個坑啦粹,故記錄一下。
錯誤日志(這是解決后復(fù)現(xiàn)的窘游,錯誤原因不一致唠椭,但是根源是一樣的
):
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
項目使用本地存儲通過信息,首次進(jìn)入游戲需要判斷本地存儲是否有記錄忍饰,然而let localData = cc.sys.localStorage.getItem(LocalKey);
獲得的localData在CC編譯器中為空即可贪嫂,可構(gòu)建成iOS項目時,則需要判斷為null艾蓝,所以導(dǎo)致首次處理本地存儲的邏輯沒有運行力崇,并且后續(xù)讀取本地儲存并不是我預(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ù)為空赢织,也就是首次打開
}
另一種寫法亮靴,還未測試:
let bossRecordCheck = cc.sys.localStorage.getItem(FMLocalBossRecordKey);
//如果為空,初始化
if (! bossRecordCheck) {
//表示數(shù)據(jù)不存在
}