【问题标题】:Cordova Native Storage Plugin undefined in app iOSCordova Native Storage Plugin 在应用程序 iOS 中未定义
【发布时间】:2019-09-23 22:30:04
【问题描述】:

我已将最新版本的 Cordova Native Storage 插件 (https://github.com/TheCocoaProject/cordova-plugin-nativestorage) 安装到我的 Cordova / Nuxt JS 项目中。我试图在单击按钮时存储一些数据,并在单击其他按钮时提醒数据:

<template>
  <div class="fill-height has-safe-area-top">
    <v-container>
      <v-layout row pb-2>
        <v-flex>
          <h1>Native storage test</h1>
          <v-btn @click="storeData">Store</v-btn>
          <v-btn @click="getData">Get</v-btn>
        </v-flex>
      </v-layout>
    </v-container>
  </div>
</template>

<script>
export default {
  methods: {

    storeData() {
      NativeStorage.initWithSuiteName("suitename");
      NativeStorage.setItem("reference_to_value", "my value");
    },

    getData() {
      alert(NativeStorage.getItem("reference_to_value"))
    }

  }
}
</script>

在 Xcode 10 编译的物理设备上进行测试时,这似乎在 alert() 上返回 undefined

【问题讨论】:

    标签: javascript ios cordova nuxt.js


    【解决方案1】:

    正如我们在文档中看到的,setItem 方法有一个成功和错误回调函数,因此我推断该函数是异步的。

    NativeStorage.setItem("reference_to_value",<value>, <success-callback>, <error-callback>);
    

    我认为你按下第二个按钮太快了,第一个方法还没有完成将其变量写入手机的本机存储

    试试类似的方法:

    storeData() {
      NativeStorage.initWithSuiteName("suitename");
      NativeStorage.setItem("reference_to_value", "my value", () => {
          alert("SUCCESS");
      }, () => {
          alert("ERROR");
      });
    },
    

    在没有显示警报时不要触摸任何东西

    getItem 也是不返回任何内容的“回调”方法。你应该像这样处理这个函数的回调:

    getData() {
        NativeStorage.getItem("reference_to_value", (value) => {
            alert(value);
        }, () => {
            alert("ERROR");
        });
    }
    

    【讨论】:

    • 我已经实现了这个,它似乎对 Android 很有效,但是,对于 iOS,在存储到本机存储一次并强制关闭应用程序后,本机存储已在重新打开应用程序时被清除.对于 Android,情况并非如此
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-25
    • 1970-01-01
    • 2017-06-26
    • 2014-12-20
    • 2018-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多