【问题标题】:Try Catch in Swift, Can't figure it out在 Swift 中尝试 Catch,无法弄清楚
【发布时间】:2021-04-08 21:58:01
【问题描述】:

我正在尝试将以下内容放入 do try catch 块中,但我总是会遇到编码错误。有人可以帮我吗?

 let here = CGRect(x: UIScreen.main.bounds.width - 30, y: 80, width: 10, height: 10)
        DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
            let popTip = PopTip()
            popTip.show(text: "Font Sizes", direction: .down, maxWidth: 200, in: (self.navigationController?.view)! , from: here, duration: 3)
        }

【问题讨论】:

  • 只有throw的API可以是caught。妥善处理可选项。
  • 我在 popTip.Show 行收到错误。这是因为由于调度,navigationController 不可用,并且用户在延迟 3 秒后执行异步任务之前移动到另一个控制器。那我该如何处理呢?我很抱歉给你添麻烦了。我花了几个小时试图弄清楚。我终于放弃了。

标签: swift try-catch do-catch


【解决方案1】:

您的问题是您没有任何实际引发错误的内容(即标有try)。我无法完全理解您在评论中所说的内容,但是我相信您可以在不使用 do-catch 子句但使用 guard-let 语句来检查 self.navigationController.view 是否为 nil 的情况下解决此问题。 如果是nil,则只需return 函数即可。

【讨论】:

  • 这就像一个魅力。在很大程度上,我是一名自学成才的程序员,但我的成功归功于 StackOverflow 上的合作程序员。非常感谢。
  • 总是很乐意帮助像我这样的自学成才的程序员!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-02
  • 1970-01-01
相关资源
最近更新 更多