HarmonyOS 鸿蒙Next PersistentStorage的持久化使用问题

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

HarmonyOS 鸿蒙Next PersistentStorage的持久化使用问题

文档中提到PersistentStorage允许的类型和值有:
number, string, boolean, enum 等简单类型。
可以被JSON.stringify()和JSON.parse()重构的对象。例如Date, Map, Set等内置类型则不支持,以及对象的属性方法不支持持久化。


但我在实际中使用PersistentStorage.persistProp(‘userData’, JSON.stringify(new UserData()))
持久化一个对象时,我怎样才能从AppStorage获取到这个对象?
直接使用 @StorageLink(‘userData’) userData: UserData = new UserData()是错误的,
使用@StorageLink(‘userData’) userData: String = ""又不能做到修改属性的同时使得状态变量更新被观察到


更多关于HarmonyOS 鸿蒙Next PersistentStorage的持久化使用问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

存储持久化对象中的属性可以参考以下代码:

interface IProp {
 sex: string
 age: number
}

[@Entry](/user/Entry)
[@Component](/user/Component)
struct Index {
 [@State](/user/State) message: string = 'Hello World'
 [@StorageLink](/user/StorageLink)('aProp') aProp: IProp = { 'sex': 'mane', 'age': 20 }

 aboutToAppear(): void {
   PersistentStorage.persistProp('aProp', {
     'sex': 'mane', 'age': 20
   });
 }

 build() {
   Row() {
     Column() {
       Text(this.message)
       // 应用退出时会保存当前结果。重新启动后,会显示上一次的保存结果
       Text(`${this.aProp.age}`)
         .onClick(() => {
           this.aProp.age += 1;
         })
     }
   }
 }
}

更多关于HarmonyOS 鸿蒙Next PersistentStorage的持久化使用问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS 鸿蒙Next PersistentStorage的持久化使用问题主要涉及到数据的存储与读取机制。在鸿蒙系统中,PersistentStorage提供了一种将数据持久化到存储介质(如闪存)的能力,确保数据在设备重启后依然可用。

针对持久化使用,需确保以下几点:

  1. 正确初始化:在使用PersistentStorage之前,需通过相应的API进行初始化,确保存储系统已准备就绪。

  2. 数据写入:使用提供的API将数据写入指定键(Key)对应的值(Value)中。鸿蒙系统会负责将数据序列化并存储到持久化存储介质。

  3. 数据读取:通过指定键读取之前存储的数据。鸿蒙系统会负责从存储介质中读取数据并进行反序列化。

  4. 异常处理:在存储和读取过程中,应添加异常处理逻辑,以应对可能出现的存储介质故障或数据损坏等情况。

  5. 数据清理:在不再需要某些数据时,应通过API进行清理,释放存储空间。

若在使用过程中遇到特定问题,如数据写入失败、读取异常等,应检查初始化步骤、API使用是否正确,以及存储介质是否存在物理损坏。

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

回到顶部