HarmonyOS 鸿蒙Next中PersistenceV2持久化字段里的值默认值为null字段无法持久化
HarmonyOS 鸿蒙Next中PersistenceV2持久化字段里的值默认值为null字段无法持久化
@ObservedV2 export class HUAWEIAccountModel { @Trace idToken?: string = ‘’; @Trace openID?: string = ‘’; @Trace unionID?: string = ‘’; @Trace authCode?: string = ‘’; @Trace jwt: string | null = null; }
@ObservedV2 export class AccountUtil { private static _accountInfo: HUAWEIAccountModel = PersistenceV2.connect( HUAWEIAccountModel, ‘accountInfo’, () => new HUAWEIAccountModel() )!;
public static setJwt(jwt: string | null) { AccountUtil._accountInfo.jwt = jwt; } }
aboutToAppear() { AccountUtil.setJwt(‘111111111111111’) }
Text(AccountUtil.getAccountInfo().jwt).fontSize(34)
为什么持久化无效呢,第一次启动赋值 1111 的时候 可以正常打印
第二次启动注释掉 setJwt text 文本则打印不到值了,这是为什么呢
更多关于HarmonyOS 鸿蒙Next中PersistenceV2持久化字段里的值默认值为null字段无法持久化的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS Next中,PersistenceV2持久化对于可空字段(null)的处理确实存在特殊行为。从你的代码来看,问题出在jwt字段的类型定义上:
-
当字段被声明为
string | null
且初始值为null时,PersistenceV2可能不会将其视为需要持久化的有效值。这是设计上的限制,因为null通常被系统视为"无值"状态。 -
解决方案建议:
- 将初始值改为空字符串而不是null:
jwt: string = ''
- 或者确保每次启动时都设置非null值
-
当前行为解释: 第一次启动时设置’1111’可以正常打印,是因为设置了非null值 第二次启动时由于注释掉了setJwt,系统读取到的是持久化前的初始值null,而null值不会被PersistenceV2自动恢复
-
调试建议: 检查持久化存储的实际内容,确认jwt字段是否被正确写入,