swift - 在 beginSheetModalForWindow 中尝试

标签 swift error-handling swift2

在 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”的无效转换

为什么?

最佳答案

像这样添加默认的 catch block :

do {
      try fileString.writeToURL(fileURL, atomically: true, encoding: NSUTF8StringEncoding)
} catch let error as NSError {
      fatalError("Error writing to file - \(error)")
} catch {

}

http://www.hackingwithswift.com/new-syntax-swift-2-error-handling-try-catch

关于swift - 在 beginSheetModalForWindow 中尝试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30828779/

相关文章:

ios - 快速多级导航看不到后退按钮

python - 在Django中上传文件名

ios - 从 UILongPressRecognizer 中确定用于 segue 的单元格

swift - 测试 CharacterSet 是否包含 Swift 4 中的 Character 的最佳方法是什么?

r - 如何在条形图误差条中合并SE而不是SD?另外,如何更改x轴组的顺序

powershell - PowerShell : Capturing Error for [IO.File]::ReadAllText

swift - 如何快速自定义 UISegmentedControl 的边框

ios - 如何使用 Swift 在 iOS 上获取 ISO 639-2 国家代码

xcode - 如何知道 UITextView 中包含多少个单词

ios - Swift 应用程序在真实设备上崩溃但在模拟器上运行