HarmonyOS 鸿蒙Next 首选项怎样存对象

发布于 1周前 作者 nodeper 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 首选项怎样存对象
首选项存对象提示401。Parameter error. The type of value mast be ValueType。
业务是我登录成功要保存用户信息对象。
 

this.preferenceManager.setValue<UserModel>(AppCommonConstants.USER_MODEL, userModel)

setValue<T>(key: string, value: T) {
if (this.preferences) {
this.preferences.putSync(key, JSON.stringify(value))
this.saveUserData()
} else {
this.initPreference(PREFERENCES_NAME).putSync(key, JSON.stringify(value))
this.saveUserData()
}
}

export class UserModel {
id?: string
nickname?: string
avatar?: string
}

更多关于HarmonyOS 鸿蒙Next 首选项怎样存对象的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
有可能是value值过长,首选项Value的最大长度限制为8192个字节。可考虑使用kv数据库或者rdb进行储存。

键值型数据库参考:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/data-persistence-by-kv-store-V5

关系型数据库参考:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/data-persistence-by-rdb-store-V5

更多关于HarmonyOS 鸿蒙Next 首选项怎样存对象的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,存储对象到首选项(Preferences)通常通过序列化对象来实现。HarmonyOS提供了数据持久化的机制,类似于Android的SharedPreferences,但实现细节和API可能有所不同。

对于存储对象,你可以使用以下方法:

  1. 实现Serializable接口:首先确保你的对象实现了HarmonyOS提供的序列化接口(如果存在)。这通常涉及在对象类上添加特定的注解或实现接口。

  2. 使用JSON或其他序列化格式:将对象转换为JSON字符串或其他序列化格式,然后存储为字符串。这种方法更为通用,不依赖于特定框架的序列化机制。

  3. 存储到Preferences:使用HarmonyOS提供的Preferences API,将序列化后的字符串存储到首选项中。例如,使用putString方法存储JSON字符串。

  4. 反序列化:读取时,先从Preferences中获取字符串,然后将其反序列化为对象。

示例代码(假设使用JSON):

// 假设已有一个名为MyObject的类,且已将其转换为JSON字符串jsonObjectString
preferences.putString("myObjectKey", jsonObjectString);

// 读取
String jsonObjectString = preferences.getString("myObjectKey", null);
MyObject myObject = new Gson().fromJson(jsonObjectString, MyObject.class);

注意:上述代码仅为逻辑说明,实际API调用需参考HarmonyOS官方文档。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部