如何从本机存储中获取数据,添加到阵列然后添加回本机存储

时间:2018-01-16 16:10:46

标签: android arrays cordova typescript ionic-framework

我正在使用ionic / cordova构建应用程序。我需要能够扫描条形码,然后将时间戳(实现此目的)添加到设备本机存储。

我尝试将扫描数据添加到本机存储,但发现它只是覆盖了现有的扫描数据。然后我使用数组尝试了这个,但是再次注意到如果我更改页面,当页面再次加载时,数组为空,这样它就会用新的空数组替换现有数据。

我“想”我需要做的是 - 创建一个空数组 获取现有数据本机存储并添加到此阵列 将新扫描数据添加到此阵列 然后将数组添加回本机存储。

我目前所坚持的是将数据从本机存储中取出并添加到阵列中。 我的代码是 -

export class ScanSession {

scans: any [];

constructor(private barcodeScanner: BarcodeScanner, private          
nativeStorage: NativeStorage) { 
 this.scans = [];   
}

ScanCode() : any{
this.barcodeScanner.scan().then((barcodeData) => {

this.nativeStorage.getItem('scans')
.then(
  data => console.log(data),
  error => console.error(error)
);

  this.scans.push(data);

let inputString = "testData";

//let ts = new Date();

if( barcodeData.text == inputString){
  //this.scans.push(ts);
  this.nativeStorage.setItem('scans', (JSON.stringify(this.scans)))
  //(JSON.stringify(this.scans)
  .then(
    () => console.log('Stored item!'),
    error => console.error('Error storing item', error)
  );
  //console.log("Success");
  //console.log(this.scans);

  //this.nativeStorage.getItem('scans')
  //.then(
  //  data => console.log(data),
  //  error => console.error(error)
  // );

} else {
  console.log("Doesnt Match");
}

}, (err) => {

});
};
}

1 个答案:

答案 0 :(得分:0)

你缺少的JSON.parse作为你使用的JSON.stringify,如果你理解我的意思,你需要解组。

更改

 this.nativeStorage.getItem('scans')

 JSON.parse(this.nativeStorage.getItem('scans'))