华为鸿蒙应用--封装数据持久化工具:首选项Preferences(鸿蒙工具)-ArkTs

本文主要是介绍华为鸿蒙应用--封装数据持久化工具:首选项Preferences(鸿蒙工具)-ArkTs,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、使用方法:

0、初始化实例:一般在EntryAbility.ts的onWindowStageCreate中初始化;(可忽略)

1、将数据写入Preferences实例

function() {let arrayNum: number[] = [1, 2, 3];let arrayStr: string[] = ["5", "2", "3"];let arrayBoo: boolean[] = [true, false, true];var fruit: Fruit;fruit = new Fruit();fruit.fruitName = "Name";fruit.fruitNum = "Num";PFUtils.put("number", 10);PFUtils.put("string", "22");PFUtils.put("boolean", true);PFUtils.put("arrayNum", arrayNum);PFUtils.put("arrayStr", arrayStr);PFUtils.put("arrayBoo", arrayBoo);PFUtils.put("fruit", fruit)  // 自定义实体this.breakpointSystem.register();this.intervalId = setInterval(this.countdown, 1000);
}

2、获取键对应的值

function() {PFUtils.get("number").then((value: number) => {Logger.error(Constants.TAG, "number:" + value)})PFUtils.get("string").then((value: string) => {Logger.error(Constants.TAG, "string:" + value)})PFUtils.get("boolean").then((value: boolean) => {Logger.error(Constants.TAG, "boolean:" + value)})PFUtils.get("arrayNum").then((value: Array<number>) => {Logger.error(Constants.TAG, "Array<number>:" + value)})PFUtils.get("arrayStr").then((value: Array<string>) => {Logger.error(Constants.TAG, "Array<string>:" + value)})PFUtils.get("arrayBoo").then((value: Array<boolean>) => {Logger.error(Constants.TAG, "Array<boolean>:" + value)})PFUtils.getEntity("fruit").then((value: Fruit) => {Logger.error(Constants.TAG, "Fruit:" + value)Logger.error(Constants.TAG, "FruitName:" + value.fruitName)Logger.error(Constants.TAG, "FruitNum:" + value.fruitNum)})
}

3、其他方法:

        1、getAll:获取含有所有键值的Object对象。

        2、has:检查Preferences实例是否包含名为给定Key的存储键值对

        3、delete:从Preferences实例中删除名为给定Key的存储键值对

        4、flush:将当前Preferences实例的数据异步存储到用户首选项的持久化文件中(put中已生效)

        5、clear:清除此Preferences实例中的所有存储

二、完整代码:
import dataPreferences from '@ohos.data.preferences';
import { Constants, Logger } from '@ohos/common';let preference: dataPreferences.Preferences;
let preferenceTemp: dataPreferences.Preferences;
let context = getContext(this);export class PFUtils {/*** Read the specified Preferences persistence file and load the data into the Preferences instance.*/static async getPreferences(context: Context) {try {preference = await dataPreferences.getPreferences(context, Constants.PREFERENCES_NAME);} catch (err) {Logger.error(Constants.TAG, `Failed to get preferences, Cause: ${err}`);}}/*** Deletes the specified Preferences persistence file from memory and removes the Preferences instance.*/static async deletePreferences() {try {await dataPreferences.deletePreferences(context, Constants.PREFERENCES_NAME);} catch (err) {Logger.error(Constants.TAG, `Failed to delete preferences, Cause: ${err}`);}preference = preferenceTemp;}/*** Save the data to the Preferences.** @param data.*/static async put(key: string, value: unknown) {if (!preference) {await this.getPreferences(getContext(this));}try {if (typeof value === "number") {await  preference.put(key, value);}if (typeof value === "string") {await  preference.put(key, value);}if (typeof value === "boolean") {await  preference.put(key, value);}if (typeof value === "object") {if (Array.isArray(value)) {await  preference.put(key, value);} else {await  preference.put(key, JSON.stringify(value));}}} catch (err) {Logger.error(Constants.TAG, `Failed to put value, Cause: ${err}`);}// Store the Preference instance in the preference persistence fileawait preference.flush();}/*** Get preference data.*/static async get(key: string) {let value: unknown;if (!preference) {await this.getPreferences(getContext(this));}try {value = await preference.get(key, undefined).then();} catch (err) {Logger.error(Constants.TAG, `Failed to get value, Cause: ${err}`);}return value;}/*** Get custom entity data.*/static async getEntity(key: string) {let value: string = '';if (!preference) {await this.getPreferences(getContext(this));}try {value = (await preference.get(key, '')).toString();} catch (err) {Logger.error(Constants.TAG, `Failed to get value, Cause: ${err}`);}return JSON.parse(value);}/*** Get an Object object that contains all key values.*/static async getAll() {let value: unknown;if (!preference) {await this.getPreferences(getContext(this));}try {value = await preference.getAll().then();} catch (err) {Logger.error(Constants.TAG, `Failed to get value, Cause: ${err}`);}return value;}/*** Check if the Preferences instance contains a stored key value pair named the given Key*/static async has(key: string) {let value: boolean = false;if (!preference) {await this.getPreferences(getContext(this));}try {value = await preference.has(key).then();} catch (err) {Logger.error(Constants.TAG, `Failed to get value, Cause: ${err}`);}return value;}/*** Delete a stored key value pair named the given Key from the Preferences instance*/static async delete(key: string) {if (!preference) {await this.getPreferences(getContext(this));}try {await preference.delete(key).then();} catch (err) {Logger.error(Constants.TAG, `Failed to get value, Cause: ${err}`);}}/*** Clear all storage in this Preferences instance*/static async clear() {if (!preference) {await this.getPreferences(getContext(this));}try {await preference.clear().then();} catch (err) {Logger.error(Constants.TAG, `Failed to get value, Cause: ${err}`);}}/***Asynchronous storage of data from the current Preferences instance to the persistent file of user preferences*/static async flush() {if (!preference) {await this.getPreferences(getContext(this));}try {await preference.flush().then();} catch (err) {Logger.error(Constants.TAG, `Failed to get value, Cause: ${err}`);}}
}

这篇关于华为鸿蒙应用--封装数据持久化工具:首选项Preferences(鸿蒙工具)-ArkTs的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/531427

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

hdu1394(线段树点更新的应用)

题意:求一个序列经过一定的操作得到的序列的最小逆序数 这题会用到逆序数的一个性质,在0到n-1这些数字组成的乱序排列,将第一个数字A移到最后一位,得到的逆序数为res-a+(n-a-1) 知道上面的知识点后,可以用暴力来解 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#in

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

zoj3820(树的直径的应用)

题意:在一颗树上找两个点,使得所有点到选择与其更近的一个点的距离的最大值最小。 思路:如果是选择一个点的话,那么点就是直径的中点。现在考虑两个点的情况,先求树的直径,再把直径最中间的边去掉,再求剩下的两个子树中直径的中点。 代码如下: #include <stdio.h>#include <string.h>#include <algorithm>#include <map>#

高效录音转文字:2024年四大工具精选!

在快节奏的工作生活中,能够快速将录音转换成文字是一项非常实用的能力。特别是在需要记录会议纪要、讲座内容或者是采访素材的时候,一款优秀的在线录音转文字工具能派上大用场。以下推荐几个好用的录音转文字工具! 365在线转文字 直达链接:https://www.pdf365.cn/ 365在线转文字是一款提供在线录音转文字服务的工具,它以其高效、便捷的特点受到用户的青睐。用户无需下载安装任何软件,只

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

AI行业应用(不定期更新)

ChatPDF 可以让你上传一个 PDF 文件,然后针对这个 PDF 进行小结和提问。你可以把各种各样你要研究的分析报告交给它,快速获取到想要知道的信息。https://www.chatpdf.com/

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。