使用swift读入文本文件

Phi*_*lip 5 arrays string file swift

Swift 的新手,但用其他语言(Java、C、Python ......)完成了大量编码,我对简单地读取文件看起来有多么困难感到沮丧。

我已经阅读了许多帖子,例如这个帖子,但无法让他们的建议发挥作用。还可以阅读这篇文章这一个,但解决方案似乎长了这样一个简单的任务,也没有为我工作。

这是一个简单的版本:

    import Foundation
    let path = "./data.txt"        
    let fileContents = String(contentsOfFile: path, encoding: NSUTF8StringEncoding)        
    print(fileContents) // prints out: ("./data.txt", 4)
    let lines : [String] = fileContents.componentsSeparatedByString("\n") // error: value of type 'String' has no member 'componentsSeparatedByString'       
Run Code Online (Sandbox Code Playgroud)

现在,根据我上面链接的第一篇文章,我希望这会将指定的文件读入一个字符串,然后在换行符上拆分字符串,并给我一个数组,每行作为一个元素。相反,当我打印 fileContents 时,我得到的是某种类型的元组而不是我期望的字符串。当我尝试拆分字符串时,显然该函数不存在。

有人可以解释我遗漏了什么并向我展示了一种将文件中的行读入字符串数组的简短方法吗?我正在阅读文档,但甚至找不到第 3 行中 String() 调用的解释或第 5 行中对 componentsSeparatedByString() 的引用,所以我完全不考虑第一篇文章中的建议;任何指针都非常感谢。

Phi*_*lip 2

对我来说,我相信其他解决方案的问题源于我在 Linux 平台上进行开发,当时该平台似乎不像在 Mac 上那样工作。这基本上就是对我有用的最终结果:

    import Foundation

    func readFile(path: String) -> Array<String> {

        do { 
            let contents:NSString = try NSString(contentsOfFile: path, encoding: NSASCIIStringEncoding)
            let trimmed:String = contents.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
            let lines:Array<String> =  NSString(string: trimmed).componentsSeparatedByCharactersInSet(.newlineCharacterSet())
            return lines
        } catch {
            print("Unable to read file: \(path)");
            return [String]()    
        }    
    }

    let lines = readFile("./somefile.txt")
    print("Read \(lines.count) lines from file: \(lines)") 
Run Code Online (Sandbox Code Playgroud)