0

I cannot find a way to import data from a CSV file. I want the data to be loading into an array.

I have tried Googling this but nothing I find seems to work for my case

This is my UIDocumentPickerViewController.

func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
    let urlst = "\(urls)"

    if urlst.fileExtension() == "csv]" || urlst.fileExtension() == "csv" {
        // Start Import Action From CSV File
    } else {
        let alert = UIAlertController(title: "An Error Occured!", message: "The file you were trying to inport is not supported.  Only csv is support.", preferredStyle: .alert)

        alert.addAction(UIAlertAction(title: "Ok", style: .default , handler: nil))

        alert.addAction(UIAlertAction(title: "Try Again", style: .default , handler: { (UIAlertAction) in
            self.toImport()
        }))

        self.present(alert, animated: true, completion: nil)
    }
}

My expected result is to get the csv file that the user selected using the UIDocumentPickerViewController and then importing it into an array or more then one. But I cannot find a way to make this work.

117MasterChief96
  • 548
  • 1
  • 5
  • 16

1 Answers1

0

I finally found the solution to my problem. Here is the code:

let path = url.path
        let importer = CSVImporter<exportDataImport>(path: path)
        importer.startImportingRecords { recordValues -> exportDataImport in
            return exportDataImport(name: recordValues[0], pricePer: recordValues[2], amount: recordValues[1], isComplte: recordValues[4], Qty: recordValues[3])
            }.onFinish { importedRecords in

            var tempArray = [exportDataImport]()
            for record in importedRecords {
                tempArray.append(record)
            }

            if tempArray.count > 0 {
                tempArray.removeFirst(1)
                self.importArray = tempArray
                self.startImport()
            }
        }
117MasterChief96
  • 548
  • 1
  • 5
  • 16