HarmonyOS 鸿蒙Next 本地化存储代码报错,请求大佬指点一下
HarmonyOS 鸿蒙Next 本地化存储代码报错,请求大佬指点一下
代码定义
import preferences from '@ohos.data.preferences';
class PreferencesUtil {
//设置数据
async set(storeName: string, key: string, value: preferences.ValueType) {
try {
let context: Context = getContext(this)
let pref = await preferences.getPreferences(context, storeName)
//写入数据
await pref.put(key, value)
//flush将Preferences实例持久化
await pref.flush()
} catch (e) {
console.log('testTag', `保存preferences失败`, JSON.stringify(e));
}
}
//获取数据
async get(storeName: string, key: string, defValue: preferences.ValueType) {
try {
let context: Context = getContext(this)
let pref = await preferences.getPreferences(context, storeName)
//获取数据
let data = await pref.get(key, defValue)
return data
} catch (e) {
console.log('testTag', `获取数据失败`, JSON.stringify(e));
return ""
}
}
//删除数据
async delete(storeName: string, key: string) {
try {
let context: Context = getContext(this)
let pref = await preferences.getPreferences(context, storeName)
//删除数据
await pref.delete(key)
} catch (e) {
console.log('testTag', `删除数据`, JSON.stringify(e));
}
}
}
let preferencesUtil = new PreferencesUtil()
export default preferencesUtil
代码调用
import preferencesUtil from '../../common/PerferencesUtil'
await preferencesUtil.set('searchStore','userName','测试姓名')
报错截图
现在不是都用@kit.ArkData 这个库么?
为什么还要用'@ohos.data.preferences'这个库呀
对 @kit.ArkData 是这个库,我那个代码是旧的
// 你的代码没问题 我验证是OK的 我这边的api是5.0.1.112 (API Version 13 Release)
import preferences from '@ohos.data.preferences';
class PreferencesUtil {
//设置数据
async set(storeName: string, key: string, value: preferences.ValueType) {
try {
let context: Context = getContext(this)
let pref = await preferences.getPreferences(context, storeName)
//写入数据
await pref.put(key, value)
//flush将Preferences实例持久化
await pref.flush()
} catch (e) {
console.log(‘testTag’, 保存preferences失败
, JSON.stringify(e));
}
}
//获取数据
async get(storeName: string, key: string, defValue: preferences.ValueType) {
try {
let context: Context = getContext(this)
let pref = await preferences.getPreferences(context, storeName)
//获取数据
let data = await pref.get(key, defValue)
return data
} catch (e) {
console.log(‘testTag’, 获取数据失败
, JSON.stringify(e));
return “”
}
}
//删除数据
async delete(storeName: string, key: string) {
try {
let context: Context = getContext(this)
let pref = await preferences.getPreferences(context, storeName)
//删除数据
await pref.delete(key)
} catch (e) {
console.log(‘testTag’, 删除数据
, JSON.stringify(e));
}
}
}
let preferencesUtil = new PreferencesUtil()
export default preferencesUtil
@Component
@Entry
struct PreferencesUtilDemo {
build() {
Button(“点击”).onClick(async ()=>{
await preferencesUtil.set(‘searchStore’,‘userName’,‘测试姓名’)
preferencesUtil.get(‘searchStore’,‘userName’,‘测试姓名111’).then((res)=>{
console.error(res.toString()+“xxxx”)
})
})
}
}
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
针对你提到的HarmonyOS 鸿蒙Next 本地化存储代码报错的问题,这里有几个可能的解决方向:
-
检查权限设置:确保你的应用已经正确声明并请求了存储权限。在
config.json
文件中添加必要的权限声明,并在代码中动态请求权限。 -
路径问题:检查你使用的文件路径是否正确。鸿蒙系统对文件存储路径有特定要求,确保你使用的是系统推荐或提供的API来构建路径。
-
API调用错误:查看报错信息,确认是否因为API调用不当导致。例如,文件读写操作是否使用了正确的参数和对象。
-
版本兼容性:确认你的开发环境(包括IDE、SDK版本等)与目标设备或模拟器的鸿蒙系统版本兼容。
-
日志分析:详细查看和分析应用运行时的日志输出,这可以提供更多关于错误原因的线索。
-
示例代码对比:参考华为官方提供的存储相关示例代码,对比并找出可能的差异或错误。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。希望这些信息能帮助你解决问题。