Ionic 3 iOS writeFile "Неверный тип параметра" - PullRequest
0 голосов
/ 06 января 2019

Итак, я пытаюсь написать файл (точнее, geoJSON), отлично работает на Android, но на iOS я получаю «код: неверный тип параметра». Содержимое представляет собой строку JSON, поэтому не уверен, что происходит.

Это моя saveFile функция:

private saveFile(fileName: string, data: string, okMessage: string, errorMessage: string) {
    this.file.writeFile(this.dir, fileName, data, { replace: true })
      .then(_ => {
        this.loadingServiceProvider.dismiss();
        this.showMessage(`${okMessage} ${fileName}`);
      })
      .catch(err => {
        this.loadingServiceProvider.dismiss();
        this.showMessage(`${errorMessage} ${fileName}`);
        console.log(err)
      });
  }

this.dir инициализируется в функции init (вызов конструктора):

init() {
    console.log(`file: ${this.file}`)
    this.dir = this.file.dataDirectory;
    console.log(`file.dataDirectory: ${this.file.dataDirectory}`)
    if (this.connectivityServiceProvider.isAndroid()) {
      this.dir = this.file.externalDataDirectory;
      console.log(`file.externalDataDirectory: ${this.file.externalDataDirectory}`)
    } else if (this.connectivityServiceProvider.isIOS()) {
      this.dir = this.file.documentsDirectory;
      console.log(`file.documentsDirectory: ${this.file.documentsDirectory}`)
    }
    console.log(`dir: ${this.dir}`)
    this.shareServiceProvider.setExportDirectory(this.dir);
  }

this.file является '@ionic-native/file'

1 Ответ

0 голосов
/ 14 января 2019

Короче говоря, решение проблемы было JSON.stringify(data) перед передачей функции file.writeFile (..).

Теперь, когда я решил ее, сообщение об ошибке было довольно ясно. Я был обманут моим типом обработки.

Я получаю значение данных из хранилища (@ ionic / storage), используя эту функцию

load(key: string): Promise<string> {
  return this.storage.get(key);
}

Теперь, хотя значение Обещания должно быть строковым, потому что я использую JSON.parse(obj) в качестве данных для set, метод get возвращает obj, поэтому тип неправильный и должен быть любым.

Я отредактировал свой ответ, потому что он был неправильным, сначала я подумал, что toString() было достаточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...