首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将多行制表符分隔的文本转换为数组Swift 4

将多行制表符分隔的文本转换为数组Swift 4
EN

Stack Overflow用户
提问于 2019-02-24 10:21:22
回答 1查看 572关注 0票数 1

我需要读取一个文本文件并将其转换为数组,以便可以使用它来填充tableView。数组一行中的每个键都将进入tableView单元格中的不同标签。

制表符分隔的文本数据结构看起来像这样,但有120行:

TextA TextB TextC TextD

"TextA“进入labelA,"TextB”进入labelB,"TextC“进入labelC,以此类推。

我有一些这样的工作。我可以读取文本文件,并用行分隔它。我遇到麻烦的部分是用制表符分隔每一行,并使用键将其放入数组中。for循环中的部分是我遇到问题的地方。我不确定这是不是最好的方法。

我想我可以弄清楚如何将数组解析到表视图中,但我可能也需要帮助。

谢谢你的帮助。

代码语言:javascript
复制
    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)
    }
EN

回答 1

Stack Overflow用户

发布于 2019-03-01 04:20:54

我最终做了这件事。

代码语言:javascript
复制
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
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54848150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档