我正在尝试存储一个对象数组,其中每个对象都有一个字符串标签和相应的数组类型数据,例如:
arrayOfCategory=[
{label: "A", data: Array(36)}
{label: "B", data: Array(20)}
{label: "C", data: Array(20)}
.....
];
ScreenShoot of the inner array:
当我尝试像这样存储它时:
AsyncStorage.setItem("arrayOfCategoryStroage", JSON.stringify(arrayOfCategory));
如果我从存储中获取项目,我有一个空数组。
AsyncStorage.getItem('arrayOfCategoryStroage').then((value) => {
console.log(JSON.parse(value))
});
答案 0 :(得分:0)
可能存在问题,您获取物品的方式,并确保您的 Aysnc 存储没有在某处被清除,在这种情况下,所有数据都将丢失。
您可以通过设置项目
AsyncStorage.getItem('arrayOfCategoryStroage',JSON.stringify(data))
然后像这样获取它并检查是否有任何错误。
AsyncStorage.getItem('arrayOfCategoryStroage', (err, result) => {
if (result) {
const data= JSON.Parse(result);
}
}).catch(() => {
});
答案 1 :(得分:0)
我尝试单独存储每个项目标签,例如:
AsyncStorage.setItem(item.label, JSON.stringify(data));
然后我得到它们中的每一个并推入数组:
data1.forEach((item, i) => {
AsyncStorage.getItem(item.label).then((value) => {
if(value!=null)
{
arrayOfAll.push({label:item.label,data:JSON.parse(value)})
}
})
});
其中 data1 是一个标签数组:
const data1=[ {label: "Homepage"},
{label: "Politik"},
{label: "Lokal"},
]
我认为问题来自内部数组的大尺寸。
我用小数组试了一下,效果很好:
const someArray=[
{label: "A", data: [{id:"1", title:"title1"},{id:"2", title:"title2"}]},
{label: "B", data: [{id:"1", title:"title1"},{id:"2", title:"title2"}]},
{label: "C", data: [{id:"1", title:"title1"},{id:"2", title:"title2"}]},
];