求助:关于元服务中使用preferences的相关问题

2024-11-06 13:30:56
381次阅读
1个评论

对于数据持久化这个操作,元服务只支持“通过用户首选项实现数据持久化” 我的设想是这样的

在页面中我把数据保存下来并持久化 然后在元服务卡片中,点击其中一个按钮,直接获取我持久化的数据进行下一步的操作

出现的问题是: 通过预览器进行测试时,没有问题,效果符合我的设想 但是在模拟器中测试时,元服务卡片这里点击以后,无法获取持久化的数据

想请教这是什么问题?真机上是否会有这个问题? 谢谢

对于数据持久化,我这里写了一个用来调用的,最后两种测试情况都用的这段代码,实际代码如下:


const contextall = getContext(this);

export class mydata{
  dataPreferences: preferences.Preferences | null = null;
  context:Context | null = getContext(this);
  _Init : () =>Promise<string>=()=>{
    let that = this;
    return new Promise((succ,err)=>{
      if(that.dataPreferences != null)return;
      console.log("applog:数据库初始化")
      let options: preferences.Options = { name: 'myStore' };
      that.dataPreferences = preferences.getPreferencesSync(that.context, options);
      succ("success")
    })
  }
  set : (key:string,value:string)=>Promise<string>=(key,value)=>{
    return new Promise((succ, err) => {
      if(this.dataPreferences){
        this.dataPreferences.putSync(key,value);
        this.dataPreferences.flush((err2: BusinessError) => {
          if (err2) {
            console.error(`applog:Failed to flush. Code:${err2.code}, message:${err2.message}`);
            return;
          }
          console.log(`applog:数据保存成功:${key}:${value}`);
          succ(`数据保存成功:${key}:${value}`);
        })
      }else{
        console.log(`applog:数据保存失败:${key}:${value}`);
        err(`数据保存失败:${key}:${value}`);
      }
    });
  }
  get :(key:string) =>Promise<string>=(key)=>{
    return new Promise((succ,err)=>{
      if(this.dataPreferences){
        let val = ""+this.dataPreferences.getSync(key, 'null');
        console.log(`applog:数据获取成功:${key}:${val}`);
        succ(val);
      }else{
        console.log(`applog:数据获取失败`);
      }
    })
  }
  get2=(key:string)=>{
    if(this.dataPreferences){
      let val = ""+this.dataPreferences.getSync(key, 'null');
      console.log(`applog:数据获取成功2:${key}:${val}`);
      return val;
    }else{
      console.log(`applog:数据获取失败2`);
      return "null";
    }
  }
  delete:(key:string) =>Promise<string>=(key)=>{
    return new Promise((succ,err)=>{
      if(this.dataPreferences){
        this.dataPreferences.deleteSync(key);
        console.log("applog:数据删除成功");
        succ(`数据删除成功`);
      }
    })
  }

  constructor(t?:boolean,context?:Context) {
    if(!t){
      this._Init();
    }
    if(!context){
      this.context = contextall;
    }else{
      this.context = context;
    }
  }

}
收藏00
    2024-11-07 00:36:26

    你的电脑环境是?mac还是win mac的话,是intel还是arm

    • 小张作者
      2024-11-07 12:38:13

      是win,因为我没有真机也不知道实际怎么样。。。

登录 后评论。没有帐号? 注册 一个。