鸿蒙next persistentV2使用记录

使用案例

鸿蒙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}`);
});

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值