2017-10-17 10 views
0

Firebase에서 다운로드 한 이미지를 추가하는 데 도움이 필요하므로 UIActivityViewController를 통해 공유 할 수 있습니다. 올바른 이미지를 얻지 만 공유 할 수 있도록 데이터 패스 설정 방법을 확신 할 수 없습니다. 현재 설정은 "objectsToShare = [self.image!]"에 "Thread 1 error"를 발생시킵니다. 아래의 장소에서Swift Firebase UIActivityViewController에 대한 이미지 추가

let shareAction = UIAlertAction(title: "Share", style: UIAlertActionStyle.default, handler: {(alert: UIAlertAction!) in 
     var objectsToShare: [AnyObject]? 


     let titlePost = self.feeds[sender.tag].downloadURL 

     if let postURL = URL(string: titlePost) { 
      let postRequest = URLRequest(url: postURL) 
      self.image?.setImageWith(postURL, placeholderImage: nil, options: SDWebImageOptions.progressiveDownload, completed: { (imageRequest, imageResponse, error) -> Void in 
       // failure downloading image 
       print("Error downloading Firebase post image") 
       print(error) 
      }) 
     } 

     objectsToShare = [self.image!] 
     let activityViewController = UIActivityViewController(activityItems: objectsToShare!, applicationActivities: nil) 

     // present the view controller 
     self.present(activityViewController, animated: true, completion: nil) 
    }) 

답변

0

는 :

objectsToShare = [self.image!] 

이 같이 사용해야합니다 : 당신은 완료 핸들러가 먼저 무엇인지 확인해야합니다

if let image = self.image { 
     objectsToShare.append(image) 
} 
+0

"objectsToShare"를 nil로 지정하십시오. 이미지를 올바르게 다운로드하지 않을 수 있습니까? –

+0

이미지를 올바르게로드하는 데 약간의 시간이 걸립니다. 이미지를 할당 할 때 다운로드하지 않을 수 있습니다. 따라서 해당 코드를 완료 블록으로 이동 한 다음 테스트하십시오. –

0

.

완료시 오류가 있는지 확인하고 그렇지 않은 경우 이미지와 관련하여 수행해야합니다. 요청이 비동기이기 때문에 이미지는 아직 그 라인 바로 위에 없습니다. 다음과 같이하십시오.

self.image?.setImageWith(postURL, placeholderImage: nil, options: SDWebImageOptions.progressiveDownload, completed: { (imageRequest, imageResponse, error) -> Void in 
    // This closure is called when the request is done 
    if error == nil { 
     objectsToShare = [self.image!] 
     let activityViewController = UIActivityViewController(activityItems: objectsToShare!, applicationActivities: nil) 
     // present the view controller 
     self.present(activityViewController, animated: true, completion: nil) 
    } else { 
     // failure downloading image 
     print("Error downloading Firebase post image") 
     print(error) 
    } 
}) 
+0

답을 다시 확인하고 싶을 수도 있습니다. 많은 오류. –

+0

지금 확인해보십시오, 나는 2 줄을 복제했습니다. 여전히 오류가있는 경우 코드를 복사하여 붙여 넣기 만하면됩니다. 나는 당신이해야 할 일을 설명 했으므로 초보자도 충분해야한다고 설명했다. –

+0

"if error == nil"에 대한 경고를 받는다. "SDImageCacheType '타입의 비 선택적 값을 nil로 항상 비교하면 항상 false를 반환한다." –