HarmonyOS 鸿蒙Next stage模型,arkts语言,有关[@ohos.data.preferences (用户首选项)]key-value存取值的问题,为什么存完值取不出来
HarmonyOS 鸿蒙Next stage模型,arkts语言,有关[@ohos.data.preferences (用户首选项)]key-value存取值的问题,为什么存完值取不出来
文档里写的是在EntryAbility.ts中初始化,但是那样写会崩溃!所以我在aboutToAppear中初始化,虽然不会崩溃,但是存进去的数据,点击查看的时候,不会显示出来!
文档放在评论区!(人工审核链接有点慢!)
import data_preferences from '@ohos.data.preferences';
import common from '@ohos.app.ability.common';
let preferences = null;
const context = this as common.UIAbilityContext;
@Entry
@Component
struct Application_8 {
@State str: string = '默认'
aboutToAppear() {
try {
let promise = data_preferences.getPreferences(context, 'mystore');
promise.then((object) => {
preferences = object;
console.info("Succeeded in getting preferences.");
}).catch((err) => {
console.error("Failed to get preferences. code =" + err.code + ", message =" + err.message);
})
} catch(err) {
console.error("Failed to get preferences. code =" + err.code + ", message =" + err.message);
}
}
build() {
Column() {
Button('点击我存值').onClick(() => {
try {
preferences.put('startup', 'auto')
} catch (err) {
console.error("Failed to put value of 'startup'. code =" + err.code + ", message =" + err.message);
}
})
Button('点我查看值').onClick(() => {
this.str = preferences.get('startup', '111')
})
Text(this.str)
}.width('100%').height('100%').alignItems(HorizontalAlign.Center)
}
}
更多关于HarmonyOS 鸿蒙Next stage模型,arkts语言,有关[@ohos.data.preferences (用户首选项)]key-value存取值的问题,为什么存完值取不出来的实战教程也可以访问 https://www.itying.com/category-93-b0.html
有没有可能是需要在get方法的.then里去拿到data,然后再去赋值
更多关于HarmonyOS 鸿蒙Next stage模型,arkts语言,有关[@ohos.data.preferences (用户首选项)]key-value存取值的问题,为什么存完值取不出来的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
就是这个原因,感谢感谢!!!
我这样子写能存能取,你看一下
preferences声明在组件外
有个小疑问: 当两个页面通过 preferences 交互的时候, preferences 的名称不一致, 也可以进行数据的读取是什么原因呀? 比如第一个页面 preferences 叫: myStore, 第二个页面 preferences 叫: myStop, 那么也可以进行数据的读取? 没太想明白这是为什么!
let promise = data_preferences.getPreferences(context, ‘myStore’);
打扰了,我看错了,名字不一致,并不能达到交互的效果!我看错了看错了!
把回调打印一下,看看回调里出来的什么
完蛋!日志不输出了!我先看看咋搞的,
好像根本就没走进初始化和存入取出的方法,日志输出为空!!(log是好使的),
尝试下直接初始化
找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:BV1S4411E7LY/?p=17
点击我存值
点我查看值
默认
文档里写的是在EntryAbility.ts中初始化,其实不止崩溃,还有就是在EntryAbility.ts中初始化,我引用不put,get方法
在HarmonyOS鸿蒙Next stage模型中,使用ArkTS语言操作@ohos.data.preferences
进行key-value存储时,如果存完值后取不出来,可能的原因包括:
-
未正确提交数据:在使用
Preferences.put()
方法存储数据后,必须调用Preferences.flush()
或Preferences.commit()
方法将数据持久化到磁盘,否则数据可能仅存在于内存中,导致取不到。 -
未正确加载数据:在读取数据之前,必须确保已经调用
Preferences.get()
或Preferences.has()
方法加载了数据,否则无法获取到之前存储的值。 -
Key不匹配:在存储和读取时使用的Key必须完全一致,包括大小写和字符类型,否则无法正确读取数据。
-
数据作用域问题:
@ohos.data.preferences
的数据存储是基于应用实例的,如果存储和读取的操作不在同一个应用实例中,或者使用了不同的Preferences
实例,可能导致数据无法读取。 -
数据被清除或覆盖:如果应用被卸载重装,或者存储的数据被清除或覆盖,之前存储的数据将无法读取。
-
异步操作未完成:如果存储操作是异步的,可能在存储操作未完成时就进行了读取操作,导致数据取不到。
-
权限问题:确保应用具有读取和写入存储的权限,否则可能导致数据无法正常存储或读取。
检查以上可能的原因,确保存储和读取操作的正确性。