swift - "contentsOfFile"返回nil,可能原因

标签 swift nsstring

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

原始的 csv 有大约 400,000 个字符排列在 500 行和 11 列中。是什么导致它在原始 csv 中返回 nil?

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

var error: NSError?

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

println(csvContent)

println(error)

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

错误:

Optional(Error Domain=NSCocoaErrorDomain Code=261 "The file “myDB.csv” couldn’t be opened using text encoding Unicode (UTF-8)." UserInfo=0x10050c5b0 {NSFilePath=/Volumes/Gios2TWD/myDB.csv, NSStringEncoding=4})

最佳答案

您需要像这样测试错误的代码:

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)")
}

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

错误消息如:“无法使用文本编码 Unicode (UTF-8) 打开”它不是 UTF-8 文件。该文件可能已损坏,或者可能是另一种格式。尝试 NSMacOSRomanStringEncoding,它是一种非常宽容的 8 位 ASCII 编码。它也可能是另一种 8 位 ASCII 编码。

注意:除非您 100% 确定它们在任何情况下都不会为 nil,否则不要显式解包。

关于swift - "contentsOfFile"返回nil,可能原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26453711/

相关文章:

objective-c - 使用 [NSString stringWithString : @"some string"] versus @"some string" 的优缺点

objective-c - NSString nslog 显示 "\n"换行符

ios - 将单个 swift 文件添加到现有的 objective-c 项目

swift - 从 firebase 下载图像链接时得到零

ios - Swift 中的 SHA256 - 导入框架问题

ios - 如何将变量从 NSNumberFormatter 传输到另一个 ViewController?

swift - 获取具有多个部分的表中一行的索引路径

iphone - 当值为空和某个数字时如何在标签中显示字符串值

ios - Swift:对泛型类型 Range 的引用需要参数

c - 如何在 Objective-C 的结构中将 NSString 的值存储为 char 数组?