2017-10-17 8 views
-1

쉼표로 이미지 링크를 구분 한 문자열이 있습니다. 다음은 배열로 분할하는 방법입니다 : let imagesLinks = imageLins.components(separatedBy: ",").SDWebImage는 URL에 nil을 부여합니다.

for imag in imagesLinks 
     { 
      let img = UIImageView() 

      print("\(baseReportImageURL)\(imag)") 

      img.sd_setImage(with: URL(string: "\(baseReportImageURL)\(imag)"), placeholderImage: nil) 
      imagesArray.append(img.image!) 
     } 

문이 내게 브라우저를 열고 정확한 URL을주고 인쇄가 다운로드 : 그럼, 하나 개의 링크를 얻을 이미지를 다운로드하고이 방법으로 UIImage 배열에 저장하는 for 루프를 사용했습니다 영상. 문제는 배열을 추가하는 행에 있습니다 (예 : imagesArray.append(img.image!)). 내가 얻을 :

fatal error: unexpectedly found nil while unwrapping an Optional value

fatal error: unexpectedly found nil while unwrapping an Optional value

는 그래서 이것에 대한 올바른 해결책이 될 것인가?

UPDATE

내가 SDWebImage을 사용하고 내가 완료 블록을 사용하면 응용 프로그램의 이상한 행동이있어 때문에 내 질문은 다릅니다

img.sd_setImage(with: imgURL, placeholderImage: nil,options: SDWebImageOptions(rawValue: 0), completed: { (image, error, cacheType, imageURL) in 
       activityIndicator.stopAnimating() 
       imagesArray.append(image!) 
       self.photoCollection.reloadData() 
      }) 

그래서이 활동을 계속 회전 표시기로 돌아가서 다시보기를 누르면 즉시 이미지가로드됩니다. 그래서 이미지가 다운로드 될 때 완료 블록이 호출되지 않지만 그 이유는 무엇입니까?

imagesArray.append(img.image!) 

이미지 다운로드에 대한 약간의 시간을 가지고 있기 때문에

+1

가능한 복제를 수행을 위해 [URL 이미지가 존재하는 경우 확인이 블록 (https://stackoverflow.com/questions/29962938/check-if -url-image-exist) – Desdenova

+0

'imageLinks'에 빈 링크가 없는지 확인하십시오. –

+0

@Chaudhry Talha 당신은 업데이트 후에 이미지 배열을 가져 옵니까? –

답변

0

이 때문이다. 그 때 imagesArray.append(img.image!)을 할 때 이미지가 이미지 뷰로 설정되지 않았을 가능성이 있습니다. 즉 imageArraynil을 추가하려고합니다.

두 번째 이유 왜 이미지를 배열에 저장하고 있습니까? urls 배열이 있고 SDWebImage 이미지를 표시 할 때마다 SDWebImage을 사용하고 있습니다. 어레이에 저장할 필요가 없습니다!

NSUrlSession 비동기 요청을 완료 핸들러와 함께 사용하고 완료 핸들러에서 어레이에 이미지를 추가하는 것보다 어레이에 이미지를 원하는 경우!

+0

이미지 URL이 쉼표로 구분 된 문자열을 가지고 있으며 SDWebImage 완료 블록이 어떻게 든 나에게 도움이되지 않습니다. 내 질문의 업데이트 섹션에서 내가 추가 한 것을 추가 할 수 있는지 확인하십시오. –

0

sd_setImage 완료 블록의 이미지 배열에 이미지를 추가하십시오. 이미지를 배열에 추가하려고 할 때 이미지가 아직 다운로드되지 않았으며 추가하기 전에 이미지가 nil이 아닌지 확인하십시오.

0

를 사용하여 다운로드 한 후 이미지 다운로드 조작 (추가 이미지)의

cell.appIcon.sd_setImage(with: url!, placeholderImage: UIImage(named: "App-Default"),options: SDWebImageOptions(rawValue: 0), completed: { (image, error, cacheType, imageURL) in 
// Perform operation. 
//append Image Here 
}) 
+0

이상한 행동이 있습니다. 친절하게 내 업데이트 된 질문을 참조하십시오. –