华为鸿蒙应用--封装数据持久化工具:首选项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

相关文章

C语言中位操作的实际应用举例

《C语言中位操作的实际应用举例》:本文主要介绍C语言中位操作的实际应用,总结了位操作的使用场景,并指出了需要注意的问题,如可读性、平台依赖性和溢出风险,文中通过代码介绍的非常详细,需要的朋友可以参... 目录1. 嵌入式系统与硬件寄存器操作2. 网络协议解析3. 图像处理与颜色编码4. 高效处理布尔标志集合

Java中的Lambda表达式及其应用小结

《Java中的Lambda表达式及其应用小结》Java中的Lambda表达式是一项极具创新性的特性,它使得Java代码更加简洁和高效,尤其是在集合操作和并行处理方面,:本文主要介绍Java中的La... 目录前言1. 什么是Lambda表达式?2. Lambda表达式的基本语法例子1:最简单的Lambda表

MySql match against工具详细用法

《MySqlmatchagainst工具详细用法》在MySQL中,MATCH……AGAINST是全文索引(Full-Textindex)的查询语法,它允许你对文本进行高效的全文搜素,支持自然语言搜... 目录一、全文索引的基本概念二、创建全文索引三、自然语言搜索四、布尔搜索五、相关性排序六、全文索引的限制七

Python结合PyWebView库打造跨平台桌面应用

《Python结合PyWebView库打造跨平台桌面应用》随着Web技术的发展,将HTML/CSS/JavaScript与Python结合构建桌面应用成为可能,本文将系统讲解如何使用PyWebView... 目录一、技术原理与优势分析1.1 架构原理1.2 核心优势二、开发环境搭建2.1 安装依赖2.2 验

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

基于Java实现回调监听工具类

《基于Java实现回调监听工具类》这篇文章主要为大家详细介绍了如何基于Java实现一个回调监听工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录监听接口类 Listenable实际用法打印结果首先,会用到 函数式接口 Consumer, 通过这个可以解耦回调方法,下面先写一个

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加

售价599元起! 华为路由器X1/Pro发布 配置与区别一览

《售价599元起!华为路由器X1/Pro发布配置与区别一览》华为路由器X1/Pro发布,有朋友留言问华为路由X1和X1Pro怎么选择,关于这个问题,本期图文将对这二款路由器做了期参数对比,大家看... 华为路由 X1 系列已经正式发布并开启预售,将在 4 月 25 日 10:08 正式开售,两款产品分别为华

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

SpringShell命令行之交互式Shell应用开发方式

《SpringShell命令行之交互式Shell应用开发方式》本文将深入探讨SpringShell的核心特性、实现方式及应用场景,帮助开发者掌握这一强大工具,具有很好的参考价值,希望对大家有所帮助,如... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定