试图将txt文件的内容解析为Swift中的Dictionary

时间:2016-06-28 03:41:44

标签: ios swift csv nsdictionary

我正在尝试以这种格式解析包含以下数据的.txt文件的内容:

93 --- Afghanistan
355 --- Albania
213 --- Algeria
684 --- American Samoa
376 --- Andorra
244 --- Angola
...
1 670 --- North Mariana Islands (Saipan)
...

仅供参考,这些是不同国家的区号。

我需要使用Swift读取数据,并将其放入字典中,其中键是国家/地区名称,值是区号。

这是我到目前为止的代码:

class ViewController: UIViewController {

    var dataArray:[String]?

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        loadCountryCodes()
    }

    func loadCountryCodes() {
        // Specify the path to the countries list file.
        let pathToFile = NSBundle.mainBundle().pathForResource("countrycodes", ofType: "txt")

        if let path = pathToFile {
            // Load the file contents as a string.
            let countriesString = try! String(contentsOfFile: path, encoding: NSUTF8StringEncoding)

            // Append the countries from the string to the dataArray array by breaking them using the line change character.
            dataArray = countriesString.componentsSeparatedByString("\n")


        }
    }

}

目前,我只知道如何读取每一行,但是我想要做的是,当我读取每一行时,将第一个字符串作为值添加到字典中,以及出现的第二个字符串以(---)为关键。有没有人有任何建议?

2 个答案:

答案 0 :(得分:3)

可以尝试这样的事情,但是没有测试过代码,所以可能需要一些调整

var dictionary = [String: String]()

for line in dataArray {

    var components = line.components(separatedBy: " --- ")

    dictionary[components[0]] = components[1]
}

答案 1 :(得分:0)

我必须将接受的答案的第3行更改为

var components = line.components(separatedBy: " --- ")