【问题标题】:Display alert if URL can't be opened如果 URL 无法打开,则显示警报
【发布时间】:2019-04-23 17:30:31
【问题描述】:

当我的应用无法打开 URL 时,我想通过 UIAlertController 向用户显示警报。这是我的代码:

guard let url = URL(string: urlLink) else {
  return
}
UIApplication.shared.open(url, options: [:])

还有我创建的警报:

let alert = UIAlertController(title: "Warning", message: "Problem with URL.", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Ok", style: .default, handler: nil))
self.present(alert, animated: true)

如果我将警报移动到 guard 语句中,它永远不会发生。我通过将urlLink 更改为一些随机的String 来测试它,例如"123"。关于如何显示警报的任何想法?

编辑:

我使用了canOpenURL,它返回Bool。现在我的代码是:

guard let url = URL(string: urlLink) else {
    return
}
if UIApplication.shared.canOpenURL(url) {
    UIApplication.shared.open(url, options: [:])           
} else {
    let alert = UIAlertController(title: "Warning", message: "Problem with URL.", preferredStyle: .alert)
    alert.addAction(UIAlertAction(title: "Ok", style: .default, handler: nil))
    self.present(alert, animated: true)
}

【问题讨论】:

    标签: ios swift uialertcontroller guard


    【解决方案1】:

    应该在return之前

    guard let url = URL(string: urlLink) , UIApplication.shared.canOpenURL(url) else {
    
      let alert = UIAlertController(title: "Warning", message: "Problem with URL.",   preferredStyle: .alert)
      alert.addAction(UIAlertAction(title: "Ok", style: .default, handler: nil))
      self.present(alert, animated: true)
      return
    }
    

    【讨论】:

    • 正如我在问题中提到的那样,它不起作用,或者我可能不理解 swift 中的 URL。
    • @Sk_Khan "如果我将警报移动到保护语句中,它永远不会发生。我通过将 urlLink 更改为一些随机字符串来测试它,例如 "123"。"
    • @Sk_Khan 你无法访问变量“url”
    • ,替换&&
    • 无论如何我看到你使用 canOpenURL 返回 bool 所以我可以在我的保护声明之后使用 if。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-19
    • 1970-01-01
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    • 2016-03-25
    相关资源
    最近更新 更多