华为鸿蒙应用--封装数据持久化工具:首选项Preferences(鸿蒙工具)-ArkTs
2023-12-23 21:28:12
一、使用方法:
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 file await 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}`); } } }
文章来源:https://blog.csdn.net/qq_41374940/article/details/135173867
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!