Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 离子2存储在iOS上不工作_Angular_Typescript_Ionic2_Storage - Fatal编程技术网

Angular 离子2存储在iOS上不工作

Angular 离子2存储在iOS上不工作,angular,typescript,ionic2,storage,Angular,Typescript,Ionic2,Storage,Ionic 2存储不适用于ios,但适用于Android。我正在使用这个从'@ionic/Storage'导入{Storage}在本地存储数据 我做了这样的样品 import { Storage } from '@ionic/storage'; export class MyApp { constructor(private storage: Storage) { } setData() { // set a key/value storage.set('userna

Ionic 2存储不适用于ios,但适用于Android。我正在使用这个
从'@ionic/Storage'导入{Storage}
在本地存储数据

我做了这样的样品

import { Storage } from '@ionic/storage';

export class MyApp {
  constructor(private storage: Storage) { }

  setData() {
    // set a key/value
    storage.set('username', 'johndoe');
  }
  getData() {
    // get a key/value pair
    storage.get('username').then((val) => {
      alert('Your username is', val);
    });
  }
}

它在Android上工作得非常好。但当我尝试在iOS上构建时,它不起作用。数据没有显示。关于如何在安卓和iOS平台上完美运行的ionic 2中存储持久数据的一些建议。

如果您安装SQLite插件,那么您在iOS上也不会有任何问题

这是插件

在本机应用程序上下文中运行时,存储将优先使用 SQLite,因为它是最稳定和最广泛使用的基于文件的 数据库,并避免了本地存储之类的缺陷 以及IndexedDB,例如操作系统决定以低成本清除此类数据 磁盘空间情况


首先,我看不到您的主要模块定义,所以我将首先讨论这一点。在主应用程序模块中,需要导入
IoinicStorageModule
,然后需要将其放入
imports
部分:

imports:[IonicStorageModule.forRoot({'yourappname'})]
其次,我没有看到您检查存储是否准备就绪,您可能也应该这样做:

this.storage.ready()
    .then(() => {
        this.storage.set(key, value);
    });
最后,您的本地存储问题可以通过以下简单服务轻松解决:

import { Injectable } from '@angular/core';
import { Storage } from '@ionic/storage';

@Injectable()
export class LocalStorageService {
    constructor(private storage: Storage){
    }

    public setValue(key: string, value: string): Promise<boolean> {
        return this.storage.ready()
            .then(() => {
                return this.storage.set(key, value)
                    .catch(() => {
                        return null;
                });
            });
        //TODO: Handle storage not being available
    }

    public getValue(key: string): Promise<string> {
        return this.storage.ready()
            .then(() => {
                return this.storage.get(key)
                    .catch(() => {
                        return null;
                    });
            });
        //TODO: Handle storage not being available
    }
}
从'@angular/core'导入{Injectable};
从'@ionic/Storage'导入{Storage};
@可注射()
导出类LocalStorageService{
构造函数(专用存储:存储){
}
public setValue(key:string,value:string):Promise{
返回此.storage.ready()
.然后(()=>{
返回此.storage.set(键,值)
.catch(()=>{
返回null;
});
});
//TODO:处理不可用的存储
}
公共getValue(键:字符串):承诺{
返回此.storage.ready()
.然后(()=>{
返回此.storage.get(键)
.catch(()=>{
返回null;
});
});
//TODO:处理不可用的存储
}
}

我每天都用这个。别忘了在它周围包装一些单元测试。

好的,谢谢。我试试看。但我想要@ionic/storage,因为它很容易使用,只是在ios上不起作用。很伤心:(我已经有了“IoinicStorageModule”,所以我直截了当地说了。无论如何,谢谢你。我稍后会试试。这段代码在iOS上运行吗?你测试过吗?根据文档()它是跨平台的,为每个平台选择最佳的解决方案。我目前没有访问iOS的权限,但在应用程序在应用程序商店推出之前会对其进行测试。非常有趣。你可能会向爱奥尼亚的同事提交错误请求,因为这是应该的。知道它对你不起作用,我一定会彻底测试它在发布之前,请先确认。