HarmonyOS 鸿蒙Next references 数据持久化 是否可直接存储 interface 类型数据

发布于 1周前 作者 nodeper 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next references 数据持久化 是否可直接存储 interface 类型数据

axios<UserModel, AxiosResponse<UserModel>, RequestModel>({
  url: '', //`${constantRequest.BASE_URL}svipcard/auth/api/userLogin`,
  method: 'post',
  data: NetRequest.dataSignature(params)
}).then((res: AxiosResponse<UserModel>) => {
  console.info('resQi', JSON.stringify(res), typeof (res))
  const model: UserModel = res.data['data'];
  preferencesTools.referencesSet('user',model);
}).catch((err: AxiosError) => {
  console.info('errQi', err)
})

通过登录接口 存储接口返回数据到 model ,model为 interface UserModel 类型

referencesSet(key: string, obj: object | string | number | boolean | Array<number> | Array<string> | Array<boolean> | Uint8Array | bigint) {
  preferences.getPreferences(getContext(this), ConstantCommon.PREFERENCES_NAME).then(preferences => {
    preferences.put(key, obj, (err: BusinessError) => {
      if (err) {
        console.error("preferences set Qi'. code =" + err.code + ", message =" + err.message);
        return;
      }
      console.info(`Succeeded in putting value of '${key}'.Qi`);
    })
  })
}

工具类 持久化 set 方法

referencesGet(key: string, defaultValue: preferences.ValueType) {
  preferences.getPreferences(getContext(this), ConstantCommon.PREFERENCES_NAME).then(preferences => {
    preferences.get(key, defaultValue)
      .then(value => {
        console.info('preferences get Qi', value)
        return value;
      })
  })
}

工具类 持久化 get 方法

const userModel = preferencesTools.referencesGet(‘user’,model) 业务类 取出 存储的model

请问,如何把userModel 取出来即为 interface UserModel 类型 或者转为 UserModel 类型


更多关于HarmonyOS 鸿蒙Next references 数据持久化 是否可直接存储 interface 类型数据的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
 你是想把登录接口返回的json字段转成userMode数据模型?然后再把数据模型存本地?现在具体那步有问题

这里有类型说明:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-data-preferences-V5#valuetype

建议转成json字符串后再进行存储

 preferences不支持这种类型

更多关于HarmonyOS 鸿蒙Next references 数据持久化 是否可直接存储 interface 类型数据的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中,数据持久化机制并不直接支持存储interface类型数据。HarmonyOS的数据持久化通常依赖于其提供的文件系统API或数据库解决方案,如SQLite或其他定制的存储引擎,这些存储机制要求数据能够被序列化或具有明确的存储格式。

Interface在Java或类似语言中是一种抽象类型,它定义了对象的行为但不包含具体实现。由于这种抽象性,interface类型的数据无法直接转换为可存储的格式,如字节流或数据库记录。

要在HarmonyOS中实现类似interface数据的持久化,通常需要将interface的实例转换为可存储的对象。这通常通过以下几种方式实现:

  1. 实现序列化接口:如果interface的实现类是可序列化的,可以将实现类实例进行序列化存储。
  2. 使用数据映射:将interface的关键行为和数据映射到具体的可存储数据结构上。
  3. 自定义存储格式:为interface定义一种自定义的存储格式,并在加载时重建interface的实例。

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

回到顶部