iOS解析文本文件Swift

安德鲁

我尝试解析我的txt文件,我在txt文件中有问题和5个答案,我想将问题保存到单独的变量和类似的答案中。

我的代码:

do {
        let path = Bundle.main.path(forResource: "data", ofType: "txt")
        let source = try? String.init(contentsOfFile: path!)
        var elements = source?.components(separatedBy: "\n")
        var parsedObject = [[String: String]]()

        for i in 0..<(elements?.count)! - 1 {
            let objects = [String : String]()
            let element = elements![i]
            //print(element)

            let objectsElement = element.components(separatedBy: "\r")
            let question = objectsElement[0]
            let answer1 = objectsElement[1]
            let answer2 = objectsElement[2]
            let answer3 = objectsElement[3]
            let anserr4 = objectsElement[4]
            let answer5 = objectsElement[5]

            print(question, answer1, answer2, answer3, anserr4, answer5)
            print(objectsElement)


        }

    }

我收到的错误:

线程1:致命错误:索引超出范围

如果我评论此代码:

 let question = objectsElement[0]
            let answer1 = objectsElement[1]
            let answer2 = objectsElement[2]
            let answer3 = objectsElement[3]
            let anserr4 = objectsElement[4]
            let answer5 = objectsElement[5]

            print(question, answer1, answer2, answer3, anserr4, answer5)

我会得到这样的输出:

在此处输入图片说明

结构文件:

https://drive.google.com/file/d/1ah1Mk_WY3b_qbqKM18nxxPT1rNXFiISa/view?usp=sharing

阿米特

在您的情况下,实现所需目标的一种方法是:

do {

      let path = Bundle.main.path(forResource: "Data", ofType: "txt")
      let source = try? String.init(contentsOfFile: path!)
      var elements = source?.components(separatedBy: "\n\n") // Here is the change
      var parsedObject = [[String: String]]()

      for i in 0..<(elements?.count)! - 1 {
          let objects = [String : String]()
          let element = elements![i]

          let objectsElement = element.components(separatedBy: "\n") // And Here
          if objectsElement.count > 1 {
              let question = objectsElement[0]
              let answer1 = objectsElement[1]
              let answer2 = objectsElement[2]
              let answer3 = objectsElement[3]
              let answer4 = objectsElement[4]
              let answer5 = objectsElement[5]

              print("Question: \(question)")
              print("Answer: \(answer1)")
              print("Answer: \(answer2)")
              print("Answer: \(answer3)")
              print("Answer: \(answer4)")
              print("Answer: \(answer5)")
          }
      }
}

如果您不更改文本文件格式,则可以通过这种方式获得解决方案。现在,您可以尝试此解决方案,但寻找更好的解决方案,或者如果我可以得到更好的解决方案,我会尽快发布答案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章