import preferences from '@ohos.data.preferences';
import Package from '@system.package';
// 通用工具类
class PreferencesUtil {
prefMap: Map<string, preferences.Preferences> = new Map()
// 1.加载preference实例
async loadPreference(context, name: string) {
try {
let pref = await preferences.getPreferences(context, name)
this.prefMap.set(name, pref)
console.log(`加载Preferences[${name}]成功`)
} catch (e) {
console.log(`加载Preferences[${name}]失败`, JSON.stringify(e))
}
}
// 2.进行增删改查数据操作
// 2.1 新增数据
// 异步处理,同步调用
async putPreferenceValue(name: string, key: string, value: preferences.ValueType) {
// 从preference实例中取值
if (!this.prefMap.has(name)) {
// 未初始化也就是未赋值,说明没有该首选项
console.log(`Preferences[${name}]尚未初始化}`)
}
else {
try {
let pref = this.prefMap.get(name)
// 写数据
await pref.put(key, value)
// 刷盘
await pref.flush()
console.log(`保存Preferences[${name}.${key} = ${value}]成功`)
}
catch (e) {
console.log(`保存Preferences[${name}.${key} = ${value}]失败`, JSON.stringify(e))
}
}
}
// 2.2 读取数据
async getPreferenceValue(name: string, key: string, defaultValue: preferences.ValueType) {
if (!this.prefMap.has(name)) {
console.log(`Prefernces[${name}]尚未初始化`)
}
else {
try {
let pref = this.prefMap.get(key)
// 读取数据
// value 用Promise封装,await自动封装
let value = await pref.get(key, defaultValue)
console.log(`读取Preferences[${name}.${key} = ${value}]成功`)
return value
} catch (e) {
console.log(`读取Preferences[${name}.${key}]失败`, JSON.stringify(e))
}
}
}
// 2.3 删除数据
async deletePreferenceValue(name: string, key: string) {
if (!this.prefMap.has(name)) {
console.log(`Prefernces[${name}]尚未初始化`)
}
else {
try {
let deleteValue = this.prefMap.delete(key)
console.log(`删除Preferences[${name}.${key} = ${deleteValue}]成功`)
} catch (e) {
console.log(`删除Preferences[${name}.${key}]失败`, JSON.stringify(e))
}
}
}
}
let preferencesUtil = new PreferencesUtil()
export default preferencesUtil as PreferencesUtil
Preference通用工具类
于 2024-04-15 16:25:00 首次发布