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

14 回复

有没有可能是需要在get方法的.then里去拿到data,然后再去赋值

cke_753.png

更多关于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方法

cke_1577.png

在HarmonyOS鸿蒙Next stage模型中,使用ArkTS语言操作@ohos.data.preferences进行key-value存储时,如果存完值后取不出来,可能的原因包括:

  1. 未正确提交数据:在使用Preferences.put()方法存储数据后,必须调用Preferences.flush()Preferences.commit()方法将数据持久化到磁盘,否则数据可能仅存在于内存中,导致取不到。

  2. 未正确加载数据:在读取数据之前,必须确保已经调用Preferences.get()Preferences.has()方法加载了数据,否则无法获取到之前存储的值。

  3. Key不匹配:在存储和读取时使用的Key必须完全一致,包括大小写和字符类型,否则无法正确读取数据。

  4. 数据作用域问题:@ohos.data.preferences的数据存储是基于应用实例的,如果存储和读取的操作不在同一个应用实例中,或者使用了不同的Preferences实例,可能导致数据无法读取。

  5. 数据被清除或覆盖:如果应用被卸载重装,或者存储的数据被清除或覆盖,之前存储的数据将无法读取。

  6. 异步操作未完成:如果存储操作是异步的,可能在存储操作未完成时就进行了读取操作,导致数据取不到。

  7. 权限问题:确保应用具有读取和写入存储的权限,否则可能导致数据无法正常存储或读取。

检查以上可能的原因,确保存储和读取操作的正确性。

回到顶部