Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 从CloudKit下载的URL在按下按钮时崩溃应用程序_Swift_Url_Crash_Openurl - Fatal编程技术网

Swift 从CloudKit下载的URL在按下按钮时崩溃应用程序

Swift 从CloudKit下载的URL在按下按钮时崩溃应用程序,swift,url,crash,openurl,Swift,Url,Crash,Openurl,我从CloudKit下载了Facebook URL,它包含在我的facebookurl变量中。url设置为从facebookurl获取字符串,并将其转换为最后一行中open函数的可行url。但是,每次尝试在我的running应用程序中打开此按钮都会崩溃,给我留下以下一般错误: 我错过了什么?多亏了皮尔斯和利奥·达布斯 我把代码改成这样- if let facebookurl = detail.value(ForKey: "Facebook") as! String? { let url =

我从CloudKit下载了Facebook URL,它包含在我的facebookurl变量中。url设置为从facebookurl获取字符串,并将其转换为最后一行中open函数的可行url。但是,每次尝试在我的running应用程序中打开此按钮都会崩溃,给我留下以下一般错误:


我错过了什么?

多亏了皮尔斯和利奥·达布斯

我把代码改成这样-

if let facebookurl = detail.value(ForKey: "Facebook") as! String?
{
  let url = URL(string: facebookurl)
  UIApplication.shared.open(url!, options: [:], completionHandler: nil)
}

它返回的是有效的URL吗?尝试设置断点,然后将返回的内容打印为facebookurl,然后复制并粘贴到浏览器中。另外,明智的做法是对URL使用可选绑定,而不仅仅是强制展开可能为零的值。不幸的是,URL是有效的。您能建议如何选择性地绑定我的URL吗?我不熟悉这个解决方案。基本上,只需在您已经完成的操作之前添加一个if语句,但在末尾用括号括起来
if let Facebook url=detail.value(ForKey:“Facebook”)as!一串{…(process facebookurl)}
问题可能在于字符串插值可能返回“可选(无论什么)”。使用if-let展开值并展开url。如果让facebook=detail.value(forKey:“facebook”)作为,不要强制它
?String,让url=url(String:facebook){UIApplication.shared.open(url)}
if let facebookurl = detail.value(ForKey: "Facebook") as! String?
{
  let url = URL(string: facebookurl)
  UIApplication.shared.open(url!, options: [:], completionHandler: nil)
}