HarmonyOS 鸿蒙Next @ohos.data.preferences 数据处理

发布于 1周前 作者 gougou168 来自 鸿蒙OS

HarmonyOS 鸿蒙Next @ohos.data.preferences 数据处理

在使用@ohos.data.preferences 数据持久存储时,使用put保存了一个字符串变量,在get是得到的是一个对象,

preferences.put(CommonConstants.PREFERENCES_KEY_UUID,uuid,(err)=>{
if(err){
console.error(code:${err.code},message:${err.message})
return
}
preferences.flush()
})

put不使用变量,直接获取到的是保存的字符串

preferences.put(CommonConstants.PREFERENCES_KEY_UUID,‘xxx’,(err)=>{
if(err){
console.error(code:${err.code},message:${err.message})
return
}
preferences.flush()
})

2 回复

试试下面的demo:

import dataPreferences from '@ohos.data.preferences';
import { BusinessError } from '@kit.BasicServicesKit';
import { util } from '@kit.ArkTS';
import preferences from '@ohos.data.preferences';


let context: Context = getContext(this)


function creatUuid(): string {
  let rand = util.generateRandomUUID(true)
  console.info(`UUID IS:` + rand)
  return rand
}

function T() {
  let preferences: dataPreferences.Preferences | null = null;
  dataPreferences.getPreferences(context, 'myStore', (err: BusinessError, val: dataPreferences.Preferences) => {
    if (err) {
      console.error("Failed to get preferences. code =" + err.code + ", message =" + err.message);
      return;
    }
    preferences = val;
    console.info("Succeeded in getting preferences.");
    let uuid: string = creatUuid()
    preferences.put('startup', uuid, (err: BusinessError) => {
      if (err) {
        console.error("Failed to put value of 'startup'. code =" + err.code + ", message =" + err.message);
        return;
      }
      preferences?.flush()
      console.info("Succeeded in putting value of 'startup'.");
    })
  })
}

function T1() {
  let preferences: dataPreferences.Preferences | null = null;
  dataPreferences.getPreferences(context, 'myStore', (err: BusinessError, val: dataPreferences.Preferences) => {
    if (err) {
      console.error("Failed to get preferences. code =" + err.code + ", message =" + err.message);
      return;
    }
    preferences = val;
    console.info("Succeeded in getting preferences.");
    preferences.get('startup', -1, (err: BusinessError, val: dataPreferences.ValueType) => {
      if (err) {
        console.error("Failed to get value of 'startup'. code =" + err.code + ", message =" + err.message);
        return;
      }
      console.info("Succeeded in getting value of 'startup'. val: " + val);
      if (typeof (val) == "string") {
        console.info("val is string")
      } else {
        console.info("val is not string")
      }
    })
  })
}


@Entry
@Component
struct Index {
  @State message: string = 'Hello World';

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)

        Button("添加数据").onClick((event: ClickEvent) => {
          T()
        })

        Button("取出数据").onClick((event: ClickEvent) => {
          T1()
        })
      }
      .width('100%')
    }
    .height('100%')
  }
}


在HarmonyOS(鸿蒙)系统中,@ohos.data.preferences 模块提供了一套轻量级的数据存储解决方案,适用于存储简单的键值对数据。这一模块类似于Android中的SharedPreferences,但针对鸿蒙系统进行了优化和适配。

使用@ohos.data.preferences进行数据处理时,你首先需要获取到Preferences对象。这通常通过Preferences.getPreferences(context, fileName, mode)方法实现,其中context是当前的上下文环境,fileName是偏好设置文件的名称,mode是文件的打开模式(如读写模式)。

获取到Preferences对象后,你可以使用putXXX(key, value)方法存储数据,其中XXX代表数据类型(如Int、String等)。相应地,使用getXXX(key, defaultValue)方法可以读取存储的数据。如果指定的键不存在,则返回默认值。

此外,Preferences还提供了remove(key)方法来删除指定键的数据,以及clear()方法来清空所有存储的数据。

需要注意的是,Preferences数据存储是异步的,但鸿蒙系统提供了同步的API接口,以确保数据的一致性和完整性。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部