【发布时间】:2017-05-05 22:34:34
【问题描述】:
我有一个关于如何在 Swift 中使用新的错误处理的问题。
我正在将文件的内容读入数据对象:
var overallData: Data?
//load file contents into data object
let dataFileURL = NSURL(string: fileName)
do {
overallData = try Data(contentsOf: dataFileURL as! URL)
} catch {
print("\(error)")
}
问题是我总是遇到这个错误信息:
致命错误:在展开可选值时意外发现 nil
问题是overallData 对象设置为nil。但是如果我没有在 do-catch 之外定义数据变量,
let dataFileURL = NSURL(string: fileName)
do {
overallData = try Data(contentsOf: dataFileURL as! URL)
} catch {
print("\(error)")
}
后来,我不能使用overallData 对象,因为系统一直告诉我它是一个尚未定义的变量。所以看起来在 do-catch 循环中定义的新变量只能在循环内部进行本地访问。
你知道如何解决这个问题吗?我确实需要在别处使用overallData 对象。
【问题讨论】:
-
使用
init(fileURLWithPath:),其中(a)是URL,而不是NSURL; (b) 是一个文件 URL。
标签: ios swift error-handling swift3