HarmonyOS 鸿蒙Next 谁用过首选项,能讲讲怎么用么
HarmonyOS 鸿蒙Next 谁用过首选项,能讲讲怎么用么
这样用不对吗,怎么没有相关函数,如图:

更多关于HarmonyOS 鸿蒙Next 谁用过首选项,能讲讲怎么用么的实战教程也可以访问 https://www.itying.com/category-93-b0.html
了解了,谢谢各位的指点
更多关于HarmonyOS 鸿蒙Next 谁用过首选项,能讲讲怎么用么的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
// Storage.ets
Logger可以去掉,或者自己找找官方的源码。
storageKey可以定义一个自己喜欢的单词。
import dataPreferences from '@ohos.data.preferences';
import Logger from './Logger'
import { storageKey } from '../config/index'
let context = this.getContext();
let preference: dataPreferences.Preferences;
let loggerTag: string = '[FY-Storage]';
/**
* 应用持久化轻量级数据(首选项)
* @author xiong
* @example await Storage.get('key')
* @example await Storage.set('key', 'value')
*/
class Storage {
/**
* 调用getPreferences方法读取指定首选项持久化文件,将数据加载到Preferences实例,用于数据操作
*/
private async getPreferencesFromStorage() {
try {
preference = await dataPreferences.getPreferences(context, storageKey+'.db');
} catch (err) {
Logger.error(loggerTag, `Failed to get preferences, Cause: ${err}`);
}
}
/**
* 获取持久化的数据
* @param { String } key 需要获取的key值
*/
public async get(key: string) {
let fruit = '';
if (!preference) {
await this.getPreferencesFromStorage();
}
try {
fruit = (await preference.get(storageKey+key, '')).toString();
} catch (err) {
Logger.error(loggerTag, `Failed to get value, Cause: ${err}`);
}
return fruit;
}
/**
* 设置持久化数据
* @param { String } key 需要保存的key值
* @param { String } value 需要保存的value数据(如果是json数据,需要先转为string[JSON.stringify()])
*/
public async set(key: string, value: string) {
if (!preference) {
await this.getPreferencesFromStorage();
}
try {
await preference.put(storageKey+key, value);
} catch (err) {
Logger.error(loggerTag, `Failed to put value, Cause: ${err}`);
}
await preference.flush();
}
/**
* 删除持久化数据
* @param { String } key 需要删除key值
*/
public async delete(key: string) {
if (!preference) {
await this.getPreferencesFromStorage();
}
try {
await preference.delete(storageKey+key);
} catch (err) {
Logger.error(loggerTag, `Failed to put value, Cause: ${err}`);
}
}
/**
* 获取所有持久化数据
*/
public async getAll() {
if (!preference) {
await this.getPreferencesFromStorage();
}
return preference.getAll();
}
/**
* 检查Preferences实例是否包含名为给定Key的存储键值对
* @param { String } key 需要检测的key值
*/
public async has(key: string) {
if (!preference) {
await this.getPreferencesFromStorage();
}
return preference.has(storageKey+key);
}
/**
* 清除此Preferences实例中的所有存储
*/
public async clear() {
if (!preference) {
await this.getPreferencesFromStorage();
}
return preference.clear();
}
}
export default new Storage();
你这个delete感觉没删除掉 就很奇怪,
你这preferences是Promise 当然没有对应函数了,你要取出值,参考官方文档:https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/js-apis-data-preferences-0000001427745052-V3
鸿蒙Next中的首选项(Preferences)是一种轻量级的数据存储方式,适用于保存应用的配置信息或用户偏好设置。首选项基于键值对存储,支持多种数据类型,如字符串、整型、布尔值等。使用首选项时,首先需要通过PreferencesHelper
创建或获取一个首选项实例。例如,PreferencesHelper.getPreferences(context, "my_preferences")
可以获取名为my_preferences
的首选项实例。然后,可以使用putString
、putInt
、putBoolean
等方法存储数据,如preferences.putString("key", "value")
。读取数据时,使用getString
、getInt
、getBoolean
等方法,如String value = preferences.getString("key", "default_value")
。首选项数据会自动持久化到设备存储中,应用重启后数据仍可读取。需要注意的是,首选项适用于小规模数据存储,不适合存储大量数据或复杂结构。