我对选项,AnyObjects和Strings有点失落。我有一个应用程序,我只想在按下按钮时打开ActivityController。给定一个URL,然后会出现几个共享URL的选项。 我找不到它的工作方式,Xcode说它无法转换为AnyObject,或者我没有。
这样做的正确方法是什么? 到目前为止我所拥有的:
let data = snap.value as! [String : AnyObject] //Getting a snapshot from Firebase
let dataurl = data["url"] as! String //Prefix is url, this gives just the URL
let dataurlstring = NSURL(string: dataurl!)
let activityVC = UIActivityViewController(activityItems: dataurlstring, applicationActivities: nil)
答案 0 :(得分:1)
你可以尝试一下,让我知道它是否适合你?这不是一个正确的答案,而只是一个解决它的起点:
func showAlert(with snapValues: [String: AnyObject]?) {
guard let snapValues = snapValues, let dataurl = snapValues["url"] as? String, let dataurlstring = NSURL(string: dataurl) else {
return
}
let activityVC = UIActivityViewController(activityItems: [dataurlstring], applicationActivities: nil)
//Continue to show the alert or return the object activityVC
}
并称之为:
let snapValues = snap.value as? [String : AnyObject]
showAlert(with: snapValues)
如果你想避免函数中的可选参数改变代码,如下所示:
功能:
func showAlert(with snapValues: [String: AnyObject]) {
guard let dataurl = snapValues["url"] as? String, let dataurlstring = NSURL(string: dataurl) else {
return
}
....
}
呼叫:
if let snapValues = snap.value as? [String : AnyObject] {
showAlert(with: snapValues)
}