如题,构造后在微信开发者工具打开提示错误。在cocos是正常的。

获取存档要判断是不是null,再用JSON去转
sys.localStorage.getItem,在cocos中,空返回的是null,在微信中,空返回的是 “”,看看是不是这个问题。
那应该怎么操作呢
需要怎么操作呢
这样判断下
var data = 读出来的存档
if(data != null){
var ob = JSON.parse xxx
}
直接点可以这样
我不推荐游戏代码大量使用 try catch, 会影响性能和代码可读性。
但对于文件和数据解析这一类,推荐用 try catch 做一个保险。 因为我们根本无法预测数据的合法性。
let jsonData:any = {};
try{
jsonData = JSON.parse(sys.localStorage.getItem('xxxx'));
}
catch(e){
jsonData = {};
}
最好做一个静态类 SafeJSON 来处理类似的情况。
新建一个文件, SafeJSON.ts,然后把下面的内容复制进去。
export class SafeJSON{
public static parse(str: string): any {
let ret = {};
try {
ret = JSON.parse(str);
}
catch (e) {
ret = {};
}
return ret;
}
public static stringify(obj: any): string {
let ret = "";
try{
ret = JSON.stringify(obj);
}
catch(e){
ret = "";
}
return ret;
}
}
外部用的时候, SafeJSON.parse, SafeJSON.stringify 就可以了。
听懂,掌声!
window.datamgr = {
subString:function(str,len){
}
window.addupdata_yzp = cc.sys.localStorage.getItem(“addupdata_yzp”);
set_addupdata_yzp(data, index){
}
下面还有一段
cc.Class({
properties: {
uidStorage:null,
localStorage:null,
uidKey:“uid”,
localStorageKey:“localStorage”,
},
ctor(){
this.init();
},
init(){
this.uidStorage = {};
this.localStorage = {
uid:0
};
var localStorage = JSON.parse(cc.sys.localStorage.getItem(this.localStorageKey));
if(localStorage){
for(var key in localStorage){
this.localStorage[key] = localStorage[key];
}
}
//部分数据绑定到uid上,个人设置等
var uidStorage = JSON.parse(cc.sys.localStorage.getItem(this.uidKey + “" + this.uid));
if(uidStorage){
for(let key in uidStorage){
this.uidStorage[key] = uidStorage[key];
}
}
},
setUidItem(key,value){
this.uidStorage[key] = value;
this.saveUidItem();
},
setItem(key,value){
this.localStorage[key] = value;
this.saveItem();
},
getUidItem(key){
return this.uidStorage[key];
},
getItem(key){
return this.localStorage[key];
},
saveUidItem(){
var str = JSON.stringify(this.uidStorage);
cc.sys.localStorage.setItem(this.uidKey + "” + this.uid,str);
},
saveItem(){
var str = JSON.stringify(this.localStorage);
cc.sys.localStorage.setItem(this.localStorageKey,str);
},
cleanUidItem(){
cc.sys.localStorage.removeItem(this.uidKey + “_” + this.uid);
},
cleanItem(){
cc.sys.localStorage.removeItem(this.localStorageKey);
}
});
我把代码贴出来了,麻烦帮忙看看怎么改呢
window.datamgr = {
subString:function(str,len){
}
window.addupdata_yzp = cc.sys.localStorage.getItem(“addupdata_yzp”);
set_addupdata_yzp(data, index){
}
下面还有一段
cc.Class({
properties: {
uidStorage:null,
localStorage:null,
uidKey:“uid”,
localStorageKey:“localStorage”,
},
ctor(){
this.init();
},
init(){
this.uidStorage = {};
this.localStorage = {
uid:0
};
var localStorage = JSON.parse(cc.sys.localStorage.getItem(this.localStorageKey));
if(localStorage){
for(var key in localStorage){
this.localStorage[key] = localStorage[key];
}
}
//部分数据绑定到uid上,个人设置等
var uidStorage = JSON.parse(cc.sys.localStorage.getItem(this.uidKey + “ " + this.uid));
if(uidStorage){
for(let key in uidStorage){
this.uidStorage[key] = uidStorage[key];
}
}
},
setUidItem(key,value){
this.uidStorage[key] = value;
this.saveUidItem();
},
setItem(key,value){
this.localStorage[key] = value;
this.saveItem();
},
getUidItem(key){
return this.uidStorage[key];
},
getItem(key){
return this.localStorage[key];
},
saveUidItem(){
var str = JSON.stringify(this.uidStorage);
cc.sys.localStorage.setItem(this.uidKey + " ” + this.uid,str);
},
saveItem(){
var str = JSON.stringify(this.localStorage);
cc.sys.localStorage.setItem(this.localStorageKey,str);
},
cleanUidItem(){
cc.sys.localStorage.removeItem(this.uidKey + “_” + this.uid);
},
cleanItem(){
cc.sys.localStorage.removeItem(this.localStorageKey);
}
});
麻烦看看怎么改哇
看不懂,不过谢谢了。 
有人吗,帮忙看看
把这个做一下判空处理 就好了
用if(值=0)这样吗
感觉像是半路出家的 
这都被你发现了,其实我啥都不太懂
看下这个写法, ok 吗 ?
// 数据管理模块
const DataMgr = {
/**
* 截取字符串
* @param {string} str - 要截取的字符串
* @param {number} len - 截取的长度
* @returns {string} - 截取后的字符串
*/
subString: function (str, len) {
// 在这里进行字符串截取操作
// 进行空值判断,确保 str 不为空
if (!str) return '';
return str.substring(0, len);
},
/**
* 设置 addupdata_yzp 数据项
* @param {*} data - 要设置的数据
* @param {*} index - 数据索引
*/
set_addupdata_yzp: function (data, index) {
// 在这里设置 addupdata_yzp 数据项
// 你的具体逻辑
}
};
window.datamgr = DataMgr;
// 数据持久化管理类
cc.Class({
properties: {
uidStorage: null,
localStorage: null,
uidKey: "uid",
localStorageKey: "localStorage",
},
/**
* 构造函数
*/
ctor() {
this.init();
},
/**
* 初始化
*/
init() {
this.uidStorage = {};
this.localStorage = {
uid: 0
};
// 从本地存储中读取 localStorage 数据
const localStorageData = JSON.parse(cc.sys.localStorage.getItem(this.localStorageKey));
if (localStorageData) {
Object.assign(this.localStorage, localStorageData);
}
// 从本地存储中读取 uidStorage 数据
const uidStorageData = JSON.parse(cc.sys.localStorage.getItem(`${this.uidKey} ${this.uid}`));
if (uidStorageData) {
Object.assign(this.uidStorage, uidStorageData);
}
},
/**
* 设置 uidStorage 中的项
* @param {string} key - 要设置的键名
* @param {*} value - 要设置的值
*/
setUidItem(key, value) {
if (!key) return; // 空值判断
this.uidStorage[key] = value;
this.saveUidItem();
},
/**
* 设置 localStorage 中的项
* @param {string} key - 要设置的键名
* @param {*} value - 要设置的值
*/
setItem(key, value) {
if (!key) return; // 空值判断
this.localStorage[key] = value;
this.saveItem();
},
/**
* 获取 uidStorage 中的项
* @param {string} key - 要获取的键名
* @returns {*} - 获取到的值
*/
getUidItem(key) {
return this.uidStorage[key];
},
/**
* 获取 localStorage 中的项
* @param {string} key - 要获取的键名
* @returns {*} - 获取到的值
*/
getItem(key) {
return this.localStorage[key];
},
/**
* 保存 uidStorage 中的数据到本地存储
*/
saveUidItem() {
const str = JSON.stringify(this.uidStorage);
cc.sys.localStorage.setItem(`${this.uidKey} ${this.uid}`, str);
},
/**
* 保存 localStorage 中的数据到本地存储
*/
saveItem() {
const str = JSON.stringify(this.localStorage);
cc.sys.localStorage.setItem(this.localStorageKey, str);
},
/**
* 清除 uidStorage 中的数据
*/
cleanUidItem() {
cc.sys.localStorage.removeItem(`${this.uidKey} ${this.uid}`);
},
/**
* 清除 localStorage 中的数据
*/
cleanItem() {
cc.sys.localStorage.removeItem(this.localStorageKey);
}
});
感谢大家,已经解了,不是你们说的问题只是符号没对