"contentsOfFile"返回零,可能的原因

Gio*_*Bar 6 nsstring swift

获取csv文件的内容时,以下内容返回nil.但是,将csv表减少到10行将正常工作,输出csv文件的内容.

原始csv有大约400,000个字符,排列在500行和11列中.什么可能导致它与原始csv返回零?

let dbPath = "/Volumes/Gios2TWD/myDB.csv"

var error: NSError?

let csvContent = NSString(contentsOfFile: dbPath, encoding:NSUTF8StringEncoding, error: &error) as String!

println(csvContent)

println(error)
Run Code Online (Sandbox Code Playgroud)

我正在运行XCode版本6.1(6A1030)

错误:

可选(错误域= NSCocoaErrorDomain代码= 261 "文件'myDB.csv’无法使用打开文本编码的Unicode(UTF-8)." 的UserInfo = 0x10050c5b0 {NSFilePath = /卷/ Gios2TWD/myDB.csv,NSStringEncoding = 4})

zap*_*aph 10

您需要用于测试错误的代码,如下所示:

let dbPath = "/Volumes/Gios2TWD/myDB.csv"
var error: NSError?
let csvContent = NSString(contentsOfFile: dbPath, encoding:NSUTF8StringEncoding, error: &error)
if csvContent != nil {
    // do something with the string
}
else {
    println("error: \(error)")
}
Run Code Online (Sandbox Code Playgroud)

然后尝试理解任何错误消息.如果您需要帮助,请将代码和完整错误消息发布到SO.

使用如下错误消息:"无法使用文本编码Unicode(UTF-8)打开"它不是UTF-8文件.文件中可能存在损坏,或许多是另一种格式.试试吧NSMacOSRomanStringEncoding,这是一个非常宽容的8位ASCII编码.它也可能是另一种8位ASCII编码.

注意:除非您100%确定在任何情况下它们永远不会是零,否则不要明确地解开东西.

  • 所以,它不是UTF-8文件.文件中可能存在损坏,或许多是另一种格式.尝试`NSMacOSRomanStringEncoding`,它是一个非常宽容的8位ASCII编码.它也可能是另一种8位ASCII编码. (4认同)