鸿蒙保存用户数据 preferences

保存用户数据

ArkTS9

保存用户数据,官方文档写的也比较想详细了,可以参考文档

不过真机运行的时候之前总是有问题,真机跑的当次设置之后再读取没有问题,不过要是在此运行的话,数据就没有了。困扰了好久,反复的看文档也没发现问题,后来提了个工单问了一下,原来还有一个神奇的设置。。。

设置步骤如下

多次运行时需要在IDE中进行设置,保存应用数据

请添加图片描述

然后将下图中的复选框勾选

请添加图片描述

之后在运行果然没有问题了。。。

部分测试代码如下

onPageShow() {
    
    
  let preference = getPreference()
  try {
    
    
    preference.get('userid', null)
      .then(data=>{
    
    
        console.log('xxxx userid is ' + data)
        if (this.title == null) {
    
    
          this.setUserId()
        }
      }).catch(err=>{
    
    
      console.log('xxxx get userid faild ' + err)
    })
  } catch (err) {
    
    
    console.log('xxxx get userid failed ' + JSON.stringify(err))
  }
}
setUserId() {
    
    
  let preference = getPreference()
  preference.put('userid', 'd0bac64b-1a0f-4e4f-bc8b-b8e6871f23e4')
    .then(()=>{
    
    
      preference.flush(function (err) {
    
    
        if (err) {
    
    
          console.error("xxxx Failed to flush. code =" + err.code + ", message =" + err.message);
          return;
        }
        console.info("xxxx Succeeded in flushing.");
      })
      console.log('xxxx save userid success')
    }).catch(err=>{
    
    
    console.log('xxxx failed to save userid ' + err)
  })
}

其中

import dataPreferences from '@ohos.data.preferences';

var preference: dataPreferences.Preferences | null = null

export const setPreference = function setPreference(value: dataPreferences.Preferences) {
    
    
  preference = value
}

export const getPreference = function getPreference() : dataPreferences.Preferences {
    
    
  return preference
}

getPreference就是简单保存了一个单例。

猜你喜欢

转载自blog.csdn.net/xo19882011/article/details/134728681