2016-08-28 3 views
1

나는 옵션, AnyObjects 및 문자열로 약간 손실됩니다. 버튼을 눌렀을 때 ActivityController를 열려고하는 애플리케이션이 있습니다. URL이 주어지면 URL을 공유 할 수있는 몇 가지 옵션이 나타납니다. 아직 작동하지 않는 방법을 찾을 수 없습니다. Xcode에서 AnyObject로 변환 할 수 없다고 말했거나 아무 것도 얻지 못합니다.UIActivityViewController에서 사용하기 위해 문자열 또는 NSUrl을 변환하십시오.

이 작업을 수행하는 올바른 방법은 무엇입니까? 내가 지금까지 가지고 :

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

당신이 snap.value의 예를 붙여 넣을 수 있습니까? –

+0

@MarcoSantarossa'print (data) = [ "url": https://www.youtube.com/]'print (dataurl) = Optional ("https://www.youtube.com/" – ffritz

+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) 

당신이 코드를 변경하는 기능의 선택적 매개 변수를 피하고 싶은 경우는 그것을 해결하기 위해 적절한 대답하지만, 단지 출발점이 아니다 이 같은 :

  1. 기능 :

    func showAlert(with snapValues: [String: AnyObject]) { 
        guard let dataurl = snapValues["url"] as? String, let dataurlstring = NSURL(string: dataurl) else { 
          return 
        } 
        .... 
    } 
    
  2. 전화 :

    if let snapValues = snap.value as? [String : AnyObject] { 
        showAlert(with: snapValues) 
    } 
    
+0

NSURL 인'dataurlstring'을 예상 된'[AnyObject]'로 변환 할 수 없다는 오류가 나타납니다. 마지막 줄. – ffritz

+0

@Warhost 제 편집을 시도하십시오 –

+0

고마워요.하지만 지금은 그걸 호출하려고 할 때, 그 snap.value가 'AnyObject?'가됩니다. '[String : AnyObject]?'로 변환 할 수 없습니다. – ffritz

관련 문제