鸿蒙PreferenceUtil

import dataPreferences from '@ohos.data.preferences'
import { TextUtil } from './TextUtil'
import {logger} from './Logger'
let preference: dataPreferences.Preferences | null

/**
 * 使用方式1:PreferenceUtil.writeBoolean(PreferenceKey.SHOW_PERMISSION_DESCRIPTION).then((userInfo: UserLoginDTO) => {
 Logger.d('userId:'+userInfo.userId)
 })
 *使用方式2:let show = await PreferenceUtil.readBoolean(SPreferenceKey.HOW_PERMISSION_DESCRIPTION)
 *         Logger.d('show:'+show)
 */
export class PreferenceUtil {
  private static readonly TAG: string = 'PreferenceUtil';
  static readonly PREFERENCE_NAME: string = 'my_preference'

  static initPreference(preferences: dataPreferences.Preferences) {
    preference = preferences;
  }
  static async writeString(key: string, value?: string) {
    try {
      if (preference != null) {
        await preference.put(key, value)
      }
    } catch (e) {
      logger.error(PreferenceUtil.TAG, 'Failed to write value, cause:' + e)
    }
    if (preference != null) {
      await preference.flush()
    }
  }

  static async readString(key: string, defaultValue?: string) {
    let value: string = "";
    try {
      if (preference != null) {
        value = await preference.get(key, defaultValue).then()
      }
    } catch (e) {
      logger.error(PreferenceUtil.TAG, 'Failed to read value, cause:' + e)
    }
    return value
  }

  static async writeArrayString(key: string, value?: Array<string>) {
    try {
      if (preference != null) {
        await preference.put(key, value)
      }
    } catch (e) {
      logger.error(PreferenceUtil.TAG, 'Failed to write value, cause:' + e)
    }
    if (preference != null) {
      await preference.flush()
    }
  }

  static async readArrayString(key: string, defaultValue?: Array<string>) {
    let value: Array<string>| null = null;
    try {
      if (preference != null) {
        value = await preference.get(key, defaultValue).then()
      }
    } catch (e) {
      logger.error(PreferenceUtil.TAG, 'Failed to read value, cause:' + e)
    }
    return value
  }

  static async writeNumber(key: string, value?: number) {
    try {
      if (preference != null) {
        await preference.put(key, value)
      }
    } catch (e) {
      logger.error(PreferenceUtil.TAG, 'Failed to write value, cause:' + e)
    }
    if (preference != null) {
      await preference.flush()
    }
  }

  static async readNumber(key: string, defaultValue?: number) {
    let value: number|undefined = undefined;
    try {
      if (preference != null) {
        value = await preference.get(key, defaultValue).then()
      }
    } catch (e) {
      logger.error(PreferenceUtil.TAG, 'Failed to read value, cause:' + e)
    }
    return value
  }

  static async writeArrayNumber(key: string, value?: Array<number>) {
    try {
      if (preference != null) {
        await preference.put(key, value)
      }
    } catch (e) {
      logger.error(PreferenceUtil.TAG, 'Failed to write value, cause:' + e)
    }
    if (preference != null) {
      await preference.flush()
    }
  }

  static async readArrayNumber(key: string, defaultValue?: Array<number>) {
    let value: Array<number> | null = null;
    try {
      if (preference != null) {
        value = await preference.get(key, defaultValue).then()
      }
    } catch (e) {
      logger.error(PreferenceUtil.TAG, 'Failed to read value, cause:' + e)
    }
    return value
  }

  static async writeBoolean(key: string, value?: boolean) {
    try {
      if (preference != null) {
        await preference.put(key, value)
      }
    } catch (e) {
      logger.error(PreferenceUtil.TAG, 'Failed to write value, cause:' + e)
    }
    if (preference != null) {
      await preference.flush()
    }
  }

  static async readBoolean(key: string, defaultValue?: boolean) {
    let value: boolean = false;
    try {
      if (preference != null) {
        value = await preference.get(key, defaultValue).then()
      }
    } catch (e) {
      logger.error(PreferenceUtil.TAG, 'Failed to read value, cause:' + e)
    }
    return value
  }

  static async writeArrayBoolean(key: string, value?: Array<boolean>) {
    try {
      if (preference != null) {
        await preference.put(key, value)
      }
    } catch (e) {
      logger.error(PreferenceUtil.TAG, 'Failed to write value, cause:' + e)
    }
    if (preference != null) {
      await preference.flush()
    }
  }

  static async readArrayBoolean(key: string, defaultValue?: Array<boolean>) {
    let value: Array<boolean> | null = null
    try {
      if (preference != null) {
        value = await preference.get(key, defaultValue).then()
      }
    } catch (e) {
      logger.error(PreferenceUtil.TAG, 'Failed to read value, cause:' + e)
    }
    return value
  }

  static async writeModel<T>(key: string, value?: T) {
    try {
      if (preference != null) {
        await preference.put(key, JSON.stringify(value))
      }
    } catch (e) {
      logger.error(PreferenceUtil.TAG, 'Failed to write value, cause:' + e)
    }
    if (preference != null) {
      await preference.flush()
    }
  }

  static async readModel<T>(key: string) {
    let value: string = ""
    try {
      if (preference != null) {
        value = await preference.get(key, '').then()
      }
    } catch (e) {
      logger.error(PreferenceUtil.TAG, 'Failed to read value, cause:' + e)
    }
    if (TextUtil.isEmpty(value)) {
      return null
    } else {
      return JSON.parse(value) as T
    }
  }

  static async delete(key: string) {
    try {
      if (preference != null) {
        await preference.delete(key).then()
      }
    } catch (e) {
      logger.error(PreferenceUtil.TAG, 'Failed to delete, cause:' + e)
    }
  }

  static async clear() {
    try {
      if (preference != null) {
        await preference.clear().then()
      }
    } catch (e) {
      logger.error(PreferenceUtil.TAG, 'Failed to clear, cause:' + e)
    }
  }

  static async flush() {
    try {
      if (preference != null) {
        await preference.flush().then()
      }
    } catch (e) {
      logger.error(PreferenceUtil.TAG, 'Failed to flush, cause:' + e)
    }
  }
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值