使用案例
鸿蒙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}`);
});
通过这个方法可以获取对应持久化存储的报错,但不能具体到参数