【发布时间】:2015-06-14 11:24:17
【问题描述】:
在 Swift 2.0 中,如果我执行以下操作:
panel.beginSheetModalForWindow(self.view.window!) { (result) in
switch result {
// Save was selected
case NSFileHandlingPanelOKButton:
self.writeFile(fileString, fileURL: panel.URL!)
// something else was selected
default:
break
}
}
使用如下函数,它可以编译并工作。
func writeFile(fileString: String, fileURL: NSURL) {
do {
try fileString.writeToURL(fileURL, atomically: true, encoding: NSUTF8StringEncoding)
} catch let error as NSError {
fatalError("Error writing to file - \(error)")
}
}
但是,如果我像这样将两者结合起来:
panel.beginSheetModalForWindow(self.view.window!) { (result) in
switch result {
// Save was selected
case NSFileHandlingPanelOKButton:
do {
try fileString.writeToURL(fileURL, atomically: true, encoding: NSUTF8StringEncoding)
} catch let error as NSError {
fatalError("Error writing to file - \(error)")
}
// something else was selected
default:
break
}
}
它不会编译。我收到编译器错误:
从 '() throws ->' 类型的抛出函数到非抛出函数类型 '(Int) -> Void' 的无效转换
为什么?
【问题讨论】:
标签: swift error-handling swift2