转换 String 或 NSUrl 以便在 UIActivityViewController 中使用
Convert String or NSUrl in order to use in UIActivityViewController
我对可选项、AnyObjects 和字符串有点迷茫。我有一个应用程序,我只想在按下按钮时打开 ActivityController。给定 URL,然后应该会出现几个共享 URL 的选项。
我找不到它的工作方式,要么 Xcode 说它不能转换为 AnyObject,要么我得到的是 nil。
这样做的正确方法是什么?
我目前拥有的:
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)
你能试试这个吗,让我知道它是否适合你?这不是一个正确的答案,只是一个修复它的起点:
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)
}
我对可选项、AnyObjects 和字符串有点迷茫。我有一个应用程序,我只想在按下按钮时打开 ActivityController。给定 URL,然后应该会出现几个共享 URL 的选项。 我找不到它的工作方式,要么 Xcode 说它不能转换为 AnyObject,要么我得到的是 nil。
这样做的正确方法是什么? 我目前拥有的:
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)
你能试试这个吗,让我知道它是否适合你?这不是一个正确的答案,只是一个修复它的起点:
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) }