鸿蒙PreferenceUtil

简介: 鸿蒙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)
    }
  }
}
目录
相关文章
|
7月前
|
安全 IDE 开发工具
HarmonyOS的功能及场景应用
一、基本介绍 鸿蒙HarmonyOS主要应用的设备包括智慧屏、平板、手表、智能音箱、IoT设备等。具体来说,鸿蒙系统是一款面向全场景(移动办公、运动健康、社交通信、媒体娱乐等)的分布式操作系统,能够支持手机、平板、智能穿戴、智慧屏、车机等多种终端设备,通过同一套系统能力、适配多种终端形态。 二、应用HarmonyOS的设备 1、智能手机: HarmonyOS用于华为的智能手机,旨在提供更流畅的用户体验和更好的多设备协同功能。 2、平板电脑: 华为的平板电脑也可以运行HarmonyOS,使用户可以在不同设备之间共享应用和数据。 3、智能电视: HarmonyOS用于智能电视,提供智能家
250 0
|
7月前
|
JavaScript 前端开发 IDE
HarmonyOS应用开发尝鲜篇:初识HarmonyOS
HarmonyOS应用开发尝鲜篇:初识HarmonyOS
|
7月前
|
编译器
【鸿蒙4.0】harmonyos Day 01
harmonyos 原生编译器Dev Ecostudio创建新工程出现bug. harmonyos4.0入门
240 7
|
7月前
|
数据安全/隐私保护
【鸿蒙4.0】harmonyos Day 03
ArkUI组件-Text、ArkUI组件-TextInput:文本输入框简介及用法
149 1
|
安全 前端开发 Android开发
鸿蒙开发|鸿蒙系统的介绍(为什么要学习鸿蒙开发|鸿蒙系统的官方定义|鸿蒙和安卓、ios的对比)
鸿蒙开发学习是一项探索性的工作,旨在开发一个全场景分布式操作系统,覆盖所有设备,让消费者能够更方便、更直观地使用各种设备。
706 6
鸿蒙开发|鸿蒙系统的介绍(为什么要学习鸿蒙开发|鸿蒙系统的官方定义|鸿蒙和安卓、ios的对比)
|
7月前
|
IDE 安全 开发工具
初学鸿蒙系统HarmonyOS第一课
初学鸿蒙系统HarmonyOS第一课
147 0
|
前端开发 JavaScript Java
华为HarmonyOS鸿蒙应用开发初体验
HarmonyOS鸿蒙系统出来好几年了,开发鸿蒙应用和咱平时的前端开发到底有什么差别呢,下面就从一个前端开发的视角带领大家体验一下HarmonyOS开发。
200 0
|
安全 Java 物联网
了解 HarmonyOS
本章提供了 HarmonyOS 的基础知识,包括定义、发展历程、特点、架构和与其他操作系统的比较。这为后续的开发工作打下了坚实的基础。
364 0
了解 HarmonyOS
HarmonyOS的三大技术特点
HarmonyOS的三大技术特点
174 0
|
JavaScript 小程序 索引
鸿蒙开发
初步上手感觉鸿蒙的语法和小程序相似,又结合了vue的语法糖,加上可以使用ES6的语法,更加丝滑
鸿蒙开发