Преобразование текста, разделенного табуляцией, в Array Swift 4 - PullRequest
0 голосов
/ 24 февраля 2019

Мне нужно прочитать текстовый файл и преобразовать его в массив, чтобы его можно было использовать для заполнения таблицы.Каждый ключ в строке массива помещается в отдельную метку в ячейке tableView.

Текстовая структура данных, разделенная табуляцией, выглядит примерно так, но с 120 строками:
TextA TextB TextC TextC

«TextA» переходит в labelA, «TextB» переходит в labelB, «TextC»"идет в labelC и т. д.

У меня есть некоторые из этих работ.Я могу прочитать текстовый файл и разделить его по строкам.У меня проблемы с разделением каждой строки на вкладки и помещением их в массив с ключами.Часть внутри цикла for, где у меня проблемы.Я не уверен, что это лучший подход.

Я думаю, что могу понять, как разобрать массив в табличном представлении, но я, вероятно, также помогу с этим.

Спасибо за помощь.

    var figureArray = [String]()

    let DocumentDirURL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
    let fileURL = DocumentDirURL.appendingPathComponent(gTheCollection).appendingPathExtension("txt")

    do {
        let readText = try String(contentsOf: fileURL, encoding: String.Encoding.utf8)

        let theLines = readText.components(separatedBy: "\n")

        let theCount = theLines.count - 1
        for i in 0...(theCount) {

            let figureData = theLines[i].components(separatedBy: "\t")

            figureArray.append(figureData[0])
            figureArray.append(figureData[1])
            figureArray.append(figureData[2])
            figureArray.append(figureData[3])
        }

    } catch let error as NSError {
            print("Failed reading from URL: \(fileURL), Error: " + error.localizedDescription)
    }

1 Ответ

0 голосов
/ 28 февраля 2019

Я закончил этим.

func buildTheDictionary() {
    let DocumentDirURL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
    let fileURL = DocumentDirURL.appendingPathComponent(gTheCollection).appendingPathExtension("txt")

    figureArray = []

    do {
        let readText = try String(contentsOf: fileURL, encoding: String.Encoding.utf8)

        let theLines = readText.components(separatedBy: "\n") as [String]

        for i in 1..<theLines.count {

            let figureData = theLines[i].components(separatedBy: "\t") as [String]

            figureDict["obrien"] = figureData[0] //"\(figureData[0])"
            figureDict["manuf"] = figureData[1] //"\(figureData[1])"
            figureDict["descript"] = figureData[2] //"\(figureData[2])"
            figureDict["notes"] = figureData[3] //"\(figureData[3])"

            figureArray.addObjects(from: [figureDict])
        }

    } catch let error as NSError {
        print("Failed reading from URL: \(fileURL), Error: " + error.localizedDescription)
    }
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let theCell = tableView.dequeueReusableCell(withIdentifier: "figureList_Cell", for: indexPath) as! FigureList_Cell

    let figures = figureArray[indexPath.row]

    theCell.obrienLabel.text = (((figures as AnyObject) .object(forKey: "obrien") ?? "") as! String)
    theCell.manufLabel.text = (((figures as AnyObject) .object(forKey: "manuf") ?? "") as! String)
    theCell.descriptionLabel.text = (((figures as AnyObject) .object(forKey: "descript") ?? "") as! String)
    theCell.notesLabel.text = (((figures as AnyObject) .object(forKey: "notes") ?? "") as! String)


    return theCell
}
...