为什么不赢得Swift 2阅读这个iOS文件?

时间:2015-10-18 15:12:16

标签: ios swift swift2

我正在尝试使用Documents目录中的文件读取/写入一些JSON数据。我使用:

编写文件
func WriteJSonToFile(fileName : String, buffer : String) -> Bool
{
    let filePath = (NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString).stringByAppendingPathComponent(fileName)
    do {
        try buffer.writeToFile(filePath, atomically: true, encoding: NSUTF8StringEncoding);
        return true
    }
    catch let error as NSError {
        print(error.localizedDescription)
    }
    return false
}

这很好用,我可以在文本编辑器中打开文件。然后我转过身来尝试阅读:

func ReadJSonFromFile(fileName : String) ->String
{
    let filePath = (NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString).stringByAppendingPathComponent(fileName)
    do {
        let databuffer = try String(contentsOfFile: filePath, encoding: NSUTF8StringEncoding)
        return databuffer
    }
    catch let error as NSError {
        print(error.localizedDescription)
    }
    return ""
}

在阅读时,我总是收到错误:

The file “authdata.dat” couldn’t be opened using text encoding Unicode (UTF-8).

但是,我使用Unicode(UTF-8)编写文件,那么为什么我不能使用完全相同的编码读取文件?这让我非常奇怪。任何人都可以提供洞察力或解决方案吗?谢谢!

1 个答案:

答案 0 :(得分:1)

试试这个:

var readError:NSError?

if let data = NSData(contentsOfFile:filePath!, options:NSDataReadingOptions.DataReadingUncached, error:&readError) {
    let stringData = NSString(data: data, encoding: NSUTF8StringEncoding)
    println("data read: \(stringData)")
}

作为旁注 - 为什么不用扩展名.json而不是.dat保存文件。