收藏
评论

盘一盘ccc存储数组的坑

开发环境:Cocos Creator 2.1.2,

语言:Type script

        在最开始的时候,采用引擎自带的保存方法 cc.sys.localStorage.setItem('key', calue),这种方法在存储的时候有一个坑就是他会把数组类型转换为 char 类型(而不是传说中的 string 类型)。这样你在调用引擎方法 cc.sys.localStorage.getItem('key') 的时候,其实返回的是一堆字符组成的集合(尽管看起来和你想要存的东西一毛一样🙄)。既然数值都还在,顺序也没错,那想着只要把数组分割开不久解决问题了么。so,通过使用 stringObject.split(separator) 方法将取回来的一坨用 ‘,‘ 分割成原来的东西。本以为万事大吉了。结果打包发布到开发者工具之后,发现开发者工具死活不认识 split 函数,没办法,只好自己写了一个类似的函数自己分割。然而,万万没想到,还是有问题。在运行了几条后,好端端的代码出了问题--不能刷新。我是拿这个东西做存储的(虽说不建议用这种方法存储数据,但是没办法,别的我也不会╮(╯▽╰)╭)。研究了半天也没有发现为什么不能刷新。没办法,老板催着要,只好换一种别的方法。通过多方搜索,最后找到一个大神给的解决方案,使用 json 来存储。即在存储数组的时候,用 JSON.stringify(value) 方法将数组操作一波,之后在读取的时候,用 JSON.parse(value) 方法将数组转换回来。嗯。很好,引擎没问题,网页端没问题,开发者工具没问题,安卓没问题。吆西,提交版本。呵,我还是太天真。ios无情的给了我一巴掌( ̄ε(# ̄)。苹果机型打不开,一张黑屏警告。为甚么啊😭,,,没办法,有bug就得该啊。然而,这回百度和google两家公司都没有给出什么实质性的建议。那咋办,,,抱着死马当活马医的态度,我调用了小游戏的存储API--wx.getStorage(Object object) ,然而数据都获取到了,但是程序却判定数据为空。后来才发现是异步获取(最开始还没注意到那行小字,后来才发现😂)。果断换了 wx.getStorageSync(Object, object) 。到目前位置,程序运行还算正常,数据存储也没有报错。到此为止,存储这一pa算是过去了。希望后来不要再出什么幺蛾子把。

本文章来自本人的真是苦痛经历,但是由于本人还是新手小白一枚,如果有什么问题还请各位大神积极指出,不胜感激!

最后一次编辑于  09-24
赞 1
收藏