快应用如何使用storage存储数组

news/2024/7/24 0:51:34 标签: 快应用, storage, 存储数据

快应用开发中遇到需要保存数据到本地的需求。在查看快应用开发文档时,发现存储方式只有数据存储和文件存储,而数据存储只有system.storage 方法,且存储的数据类型只有String类型。不像android原生开发中,除了文件存储,还有SharedPreferences简单数据存储,和sqlite 数据库的存储方式。

而我本次开发中需要存储像数据库那样的数据,数据量不大,用不找文件存储,但也不小,不是简短一个字符串能够搞定。

 

查看system.storage的介绍文档,发现其对存储值 String的lenth并没有限制,那是否可以把js数据转换成String存储呢?于是尝试用storage来完成数组的存储,实验结果是可行的。下面示例代码中的数组中每一元素包含一个id和一个链接url。

 

使用storage前一定要导入对应的接口模块

import storage from '@system.storage'

 

本页面参数定义

private: {

    gameId:"",

    shoucangList:[],

},

  • 将元素加入数组,并转换成String保存

    var item = {};

    item["id"]= this.gameId;

    item["url"] = this.imgurl;

    try {

      this.shoucangList.push(item);

      storage.set({key: 'shoucang', value: JSON.stringify(this.shoucangList)});

      console.log("savedata success: " + JSON.stringify(this.shoucangList));

    } catch(e) {

      console.log("savedata failed with exception:" + e.message + '发生在' + e.lineNumber + '行');

    }

   

  • 将指定元素删除

for (var item in this.shoucangList) {

      if (this.shoucangList[item].id === this.gameId) {

        this.shoucangList.splice(item, 1);

        storage.set({key: 'shoucang',value: JSON.stringify(this.shoucangList)});

        console.log("cancelShouCang success: " + JSON.stringify(this.shoucangList));

      }

    }

 

     const that = this;

     storage.get({key:"shoucang",

     success: function (data) {

        console.log('storage get data success:' + data);

        if (!(typeof data === "undefined" || data === null || data === "")) {

          that.shoucangList = JSON.parse(data);

        } else {

          that.shoucangList = [];

        }

  

     },

     fail: function (data, code) {

        console.log(`storage get data fail, code = ${code}`),

         that.shoucangList = [];

     }

   });

 


http://www.niftyadmin.cn/n/1642209.html

相关文章

偏差正负值什么意思_两战正负值仅-31!狼队状元对比锡安太难堪,甚至不如本内特?...

北京时间12月15日,森林狼在对阵灰熊的季前赛第二场比赛中以104-123不敌对手,而在季前赛中最值得关注的毫无疑问就是森林狼阵中2020年状元秀安东尼-爱德华兹的表现。在这场比赛中爱德华兹替补出战26分钟仅有14投4中(三分7中1)得到12分4篮板和2助攻&#x…

原生app签名如何转换成快应用签名

在对接快应用微信支付时发现,快应用微信支付申请使用的包名和签名须是某个原生app的包名和签名。 参考文档截图如下: App 微信支付申请时需要填入的包名、签名截图如下: 可见快应用微信支付的申请是按一个原生app的方式申请的。包名还好&…

good-turing平滑方法评价_学习 | 什么是织物风格?怎么分类?怎么评价?

织物的风格与评价一、 织物风格的概念广义:织物本身所固有的性、状作用于人的感觉器官所产生的综合效应。(触觉、视觉、听觉)广义织物风格包括触觉风格:以手触摸织物时产生的感觉来衡量织物的特征,即手感,亦称为织物的狭义风格。视…

color属性 python_Python多继承的坑与MRO C3广度优先算法

前言继承(英语:inheritance)是面向对象软件技术当中的一个概念。如果一个类别B“继承自”另一个类别A,就把这个B称为“A的子类”,而把A称为“B的父类别”也可以称“A是B的超类”。继承可以使得子类具有父类别的各种属性…

Js 实现小程序倒计时和快应用秒表

最近开发中遇到抢购倒计时和秒表的功能,都跟时间相关,功能也差不多。想到以后开发中会经常用到这种小功能,故记录分享一下。 小程序里的抢购倒计时: onLoad: function (options) { this.countdown("2020-6-4 18:46:13"…

奇怪的InputStream.read(buf)阻塞问题

近期本人在android开发中遇到大文件下载时阻塞问题. 客户端要下载一个文件,但每次下载到固定字节数就阻塞在那里,过一会儿就抛出SocketTimeoutException。 譬如这个文件的大小为18M,用inputStream.read(buf)的方式从socket端读取数据&#x…

呼叫中心投诉处理流程图_怎么区分全网呼叫中心和地网呼叫中心许可证?

呼叫中心许可证是第二类增值电信业务经营许可证中关于呼叫中心业务的资质许可证。呼叫中心号码分为全国的和地方的两种类型,全网呼叫中心的就是95开头的号码,地网呼叫中心的就是96开头的号码,呼叫中心许可证每年都需要进行年检。且全网呼叫中…

爬虫div下的中文怎么提取_“简单粗暴”的R语言爬虫·其一

其实离我刚接触网络爬虫的时候,已经过去了很久的时间了。借此机会,就当重新温习一下知识。对于网络爬虫,我也没有到达特别专业的程度,也只是满足自己在数据采集上的需求,所以如果有说得不对的地方,麻烦大家…