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

相关文章

Python多线程应用中的卡死问题优化方案指南

《Python多线程应用中的卡死问题优化方案指南》在利用Python语言开发某查询软件时,遇到了点击搜索按钮后软件卡死的问题,本文将简单分析一下出现的原因以及对应的优化方案,希望对大家有所帮助... 目录问题描述优化方案1. 网络请求优化2. 多线程架构优化3. 全局异常处理4. 配置管理优化优化效果1.

从基础到高阶详解Python多态实战应用指南

《从基础到高阶详解Python多态实战应用指南》这篇文章主要从基础到高阶为大家详细介绍Python中多态的相关应用与技巧,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、多态的本质:python的“鸭子类型”哲学二、多态的三大实战场景场景1:数据处理管道——统一处理不同数据格式

MySQL慢查询工具的使用小结

《MySQL慢查询工具的使用小结》使用MySQL的慢查询工具可以帮助开发者识别和优化性能不佳的SQL查询,本文就来介绍一下MySQL的慢查询工具,具有一定的参考价值,感兴趣的可以了解一下... 目录一、启用慢查询日志1.1 编辑mysql配置文件1.2 重启MySQL服务二、配置动态参数(可选)三、分析慢查

基于Python实现进阶版PDF合并/拆分工具

《基于Python实现进阶版PDF合并/拆分工具》在数字化时代,PDF文件已成为日常工作和学习中不可或缺的一部分,本文将详细介绍一款简单易用的PDF工具,帮助用户轻松完成PDF文件的合并与拆分操作... 目录工具概述环境准备界面说明合并PDF文件拆分PDF文件高级技巧常见问题完整源代码总结在数字化时代,PD

Java Stream 的 Collectors.toMap高级应用与最佳实践

《JavaStream的Collectors.toMap高级应用与最佳实践》文章讲解JavaStreamAPI中Collectors.toMap的使用,涵盖基础语法、键冲突处理、自定义Map... 目录一、基础用法回顾二、处理键冲突三、自定义 Map 实现类型四、处理 null 值五、复杂值类型转换六、处理

Python按照24个实用大方向精选的上千种工具库汇总整理

《Python按照24个实用大方向精选的上千种工具库汇总整理》本文整理了Python生态中近千个库,涵盖数据处理、图像处理、网络开发、Web框架、人工智能、科学计算、GUI工具、测试框架、环境管理等多... 目录1、数据处理文本处理特殊文本处理html/XML 解析文件处理配置文件处理文档相关日志管理日期和

使用Python开发一个Ditto剪贴板数据导出工具

《使用Python开发一个Ditto剪贴板数据导出工具》在日常工作中,我们经常需要处理大量的剪贴板数据,下面将介绍如何使用Python的wxPython库开发一个图形化工具,实现从Ditto数据库中读... 目录前言运行结果项目需求分析技术选型核心功能实现1. Ditto数据库结构分析2. 数据库自动定位3

分布式锁在Spring Boot应用中的实现过程

《分布式锁在SpringBoot应用中的实现过程》文章介绍在SpringBoot中通过自定义Lock注解、LockAspect切面和RedisLockUtils工具类实现分布式锁,确保多实例并发操作... 目录Lock注解LockASPect切面RedisLockUtils工具类总结在现代微服务架构中,分布

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

Python标准库之数据压缩和存档的应用详解

《Python标准库之数据压缩和存档的应用详解》在数据处理与存储领域,压缩和存档是提升效率的关键技术,Python标准库提供了一套完整的工具链,下面小编就来和大家简单介绍一下吧... 目录一、核心模块架构与设计哲学二、关键模块深度解析1.tarfile:专业级归档工具2.zipfile:跨平台归档首选3.