/*
* 數(shù)據(jù)持久化
* */
class PreferencesUtil{
prefMap: Map<string, preferences.Preferences> = new Map()
async loadPreference(context, name: string){
try {
// 加載preferences
let pref = await preferences.getPreferences(context, name)
this.prefMap.set(name, pref)
console.log('testTag', `加載Preferences[${name}]成功`)
} catch (e) {
console.log('testTag', `加載Preferences[${name}]失敗`, JSON.stringify(e))
}
}
async putPreferenceValue(name: string, key: string, value: preferences.ValueType){
if (!this.prefMap.has(name)) {
console.log('testTag', `Preferences[${name}]尚未初始化怕午!`)
return
}
try {
let pref = this.prefMap.get(name)
// 寫入數(shù)據(jù)
await pref.put(key, value)
// 刷盤
await pref.flush()
console.log('testTag', `保存Preferences[${name}.${key} = ${value}]成功`)
} catch (e) {
console.log('testTag', `保存Preferences[${name}.${key} = ${value}]失敗`, JSON.stringify(e))
}
}
async getPreferenceValue(name: string, key: string, defaultValue: preferences.ValueType){
if (!this.prefMap.has(name)) {
console.log('testTag', `Preferences[${name}]尚未初始化无虚!`)
return
}
try {
let pref = this.prefMap.get(name)
// 讀數(shù)據(jù)
let value = await pref.get(key, defaultValue)
console.log('testTag', `讀取Preferences[${name}.${key} = ${value}]成功`)
return value
} catch (e) {
console.log('testTag', `讀取Preferences[${name}.${key} ]失敗`, JSON.stringify(e))
}
}
}
const preferencesUtil = new PreferencesUtil()
export default preferencesUtil as PreferencesUtil
import preferencesUtil from '../Common/utils'
方法引用
await preferencesUtil.loadPreference(this.context, "club")
let firstInstall: string = await preferencesUtil.getPreferenceValue("club","firstInstall","0") as string
注意如果每次讀取的都是默認(rèn)值看一下是否設(shè)置了運(yùn)行時保留App數(shù)據(jù),見下圖
截屏2024-06-12 15.47.48.png
截屏2024-06-07 14.34.01.png