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)")
}
}
しかし、この2つを次のように組み合わせると:
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'への無効な変換
なんで?