使用案例

鸿蒙next的persistentV2用来实现数据持久化的操作,比起V1使用AppStorage+PersistStorage结合要简单了许多

export class NZUserHelper {
  @Type(NZUser)
  static currentUser:NZUser|null = null;
  
NZUserHelper.currentUser = PersistenceV2.connect(NZUser,()=> new NZUser())!;
 
NZUserHelper.currentUser.isLogin = false;
PersistenceV2.save(NZUser)

生成的文件可以通过device file manager查询
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

问题收集

被保存的对象,例如上面示例中的NZUser需要是可被系统序列化的对象,序列的要求,类型必须严格匹配(保存和读取失败并报错),不能为null(保存和读取失败并报错),不能为undefine(undefined不会报错但会丢失)

使用PersistenceV2.remove需要重新connect

数组相关的构造,数组的类型不能有构造函数

@ObservedV2
class NZArticleStorage {
  articleId:number = 0;
  @Trace readOffsetY:number = 0;

  // constructor(oid:number,offsetY:number) {
  //   this.articleId = oid;
  //   this.readOffsetY = offsetY;
  // }
}

@ObservedV2
class NZArticleStorageList {
  @Type(NZArticleStorage)
  @Trace list:NZArticleStorage[] = []
}

包含的数组,数组必须用@Type修饰

@Type(NZSNSVM)
@Trace snsBinding:Array<NZSNSVM> = [];

错误发现机制

PersistenceV2.notifyOnError((key: string, reason: string, msg: string) => {
  console.error(`error key: ${key}, reason: ${reason}, message: ${msg}`);
});

通过这个方法可以获取对应持久化存储的报错,但不能具体到参数

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐