当前位置:   article > 正文

【HarmonyOS开发】ArkTs首选项数据存储封装_arkts 本地储存多条数据

arkts 本地储存多条数据

图片

用户首选项(Preferences):以文本的形式保存数据,使用时数据会加载到内存中,范围速度快,效率高,但是不适合存储大量数据。

通过Preferences 提供接口,将持久化文件加载Preferences实例中,每一个文件对应一个Preferences 实例,系统会将Preferences实例存储在内存中,达到快速,高效访问的效果。

1、效果预览


 

2、首选项使用条件

  • 键必须为string 类型,不能为空并且长度小于80个字节。

  • 值(Value)为string 类型时,可以为空,最大限制为 8192个字节。

  • 存储数据不要超过1万条,否则会造成内存较大开销。

3、核心API

  • get(获取)

  • has(判断是否存在)

  • put(写入)

  • delete(时删除)

  • flush(持久化到文件)

  • on(订阅数据变更)

  • off(取消订阅)

4、封装为类方法

  1. import preferences from '@ohos.data.preferences';
  2. const STORE_NAME = "baseInfo"
  3. let context = getContext(this)
  4. let preference: preferences.Preferences
  5. class PreferenceUtil {
  6. // 初始化对象
  7. async getPreferences() {
  8. try {
  9. preference = await preferences.getPreferences(context, STORE_NAME)
  10. }
  11. catch (err) {
  12. console.error(`error:${err}`)
  13. }
  14. }
  15. /**
  16. * 删除所有的preferences对象
  17. */
  18. async deletePreferences() {
  19. try {
  20. await preferences.deletePreferences(context, STORE_NAME);
  21. } catch(err) {
  22. console.error('TAG', `Failed to delete preferences, Cause: ${err}`);
  23. };
  24. }
  25. // 写入preference数据
  26. async putPreference(key: string, value: string) {
  27. if (!key || !value) {
  28. return
  29. }
  30. if (!preference) {
  31. await this.getPreferences();
  32. }
  33. // 将数据保存到首选项,内存中
  34. try {
  35. await preference.put(key, value);
  36. } catch (err) {
  37. console.error('TAG', `Failed to put value, Cause: ${err}`);
  38. }
  39. // 【数据持久化,写入文件】Store the Preference instance in the preference persistence file
  40. await preference.flush();
  41. }
  42. /**
  43. * 获取preference对象
  44. */
  45. async getPreference(key: string) {
  46. if (!key) {
  47. return
  48. }
  49. let value: number | string | boolean | Array<number> | Array<string> | Array<boolean>;
  50. if (!preference) {
  51. await this.getPreferences();
  52. }
  53. try {
  54. value = await preference.get(key, '')
  55. } catch (err) {
  56. console.error('TAG', `Failed to get value, Cause: ${err}`)
  57. }
  58. if (value === '') {
  59. return
  60. }
  61. return value;
  62. }
  63. }
  64. export default new PreferenceUtil();

5、使用封装的方法

  1. import userInfoStrong from '../../utils/preferencesStrong'
  2. this.userInfo = {
  3. name: this.nickname,
  4. sex: this.sex,
  5. sign: this.signature,
  6. date: this.birthdate,
  7. hobbies: this.hobbies,
  8. }
  9. // 保存数据
  10. userInfoStrong.putPreference('userInfo', JSON.stringify(this.userInfo))
  11. // 异步获取保存的数据
  12. userInfoStrong.getPreference('userInfo').then((res) => {
  13. this.userInfo = res && JSON.parse(res) as userInfoType
  14. const { name, sex, sign, date, hobbies } = this.userInfo;
  15. this.nickname = name;
  16. this.sex = sex;
  17. this.signature = sign;
  18. this.birthdate = date;
  19. this.hobbies = hobbies;
  20. })
  21. // 清除所有的数据
  22. userInfoStrong.deletePreferences()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/314670
推荐阅读
相关标签
  

闽ICP备14008679号