2017-10-17 11 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!) 
     } 

print文は私がブラウザ上で開いたときにダウンロードし、正しいURLを与えている。そして、私は、画像をダウンロードして、このようにUIImage配列に格納し、一つのリンクを取得するためにループのために使用しました画像。問題は配列を追加する行、すなわちimagesArray.append(img.image!)にあります。私が取得:

fatal error: unexpectedly found nil while unwrapping an Optional value

fatal error: unexpectedly found nil while unwrapping an Optional value

だから何がこのために正解でしょうか?

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() 
      }) 

だから、アクティビティを回転し続け:私はSDWebImageを使用していると私は完了ブロックを使用する場合、アプリケーションの奇妙な行動があるので

私の質問が異なる

UPDATE私が戻ってビューをもう一度押すと、即座に画像がロードされます。だから私は完了ブロックは、イメージがダウンロードされたときに呼び出されないと思うが、それはなぜですか?

+1

可能な複製を実行するために、[URLの画像が存在するかどうかを確認]このブロック(https://stackoverflow.com/questions/29962938/check-if -url-image-exist) – Desdenova

+0

'imageLinks'に空のリンクがないことを確認してください。 –

+0

@Chaudhry Talhaあなたは更新後に画像の配列を取得しますか? –

答えて

0

imagesArray.append(img.image!) 

画像をダウンロードするためにいくつかの時間がかかるからです。その時点でimagesArray.append(img.image!)を実行すると、画像が画像ビューに設定されていない可能性があります。つまり、をimageArrayに追加しようとしています。

第2の理由なぜ画像を配列に格納していますか?あなたはurlsの配列を持っていて、SDWebImageの画像を表示するたびにSDWebImageを使用しています。配列に格納する必要はありません!

そして、あなたは、アレイ内の画像は、とにかく完成ハンドラで、完了ハンドラからNSUrlSession非同期要求を使用するよりもあなたのアレイに画像を追加したい場合は!

+0

画像URLがカンマで区切られた文字列があり、SDWebImage補完ブロックが何とか私のために働いていません。私の質問の更新セクションで追加したものに追加できるかどうかを確認してください。 –

0

イメージをsd_setImage完了ブロック内のイメージ配列に追加します。 イメージを配列に追加しようとしているときにイメージがまだダウンロードされていないため、イメージが追加される前にイメージが等しいかどうかを確認してください。

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

奇妙な動作があります。親切に私の更新された質問が表示されます。 –

関連する問題