Realmで保存したString型の配列にある写真の値をloop文で回しながらUIImage型に変換して、UICollectionViewCellにそれぞれの値で格納したい。
こんにちは、質問失礼致します。
現在、Realmのファイルに保存されているデータを取得し、そのデータの中に保存されているimageString
という変数に写真のデータがString型の配列で保存されているので、String型の配列にあるデータをloop文で回し、 base64
を使用してUIImage型の配列に変換し、UICollectionViewのcellにUIImageViewがあるので、そこのimageViewに値を入れたいと考えています。これは前回teratailで質問させていただき解決したのですが、UICollectionViewのCellに表示をさせる部分でCellに同じ写真が表示されてしまいます。セルをタップしてその写真の画面に遷移すると、それぞれの画像の値が取得され表示されるのですが、問題はUICollectionViewで配列のデータを全て表示させる時に全部同じ写真が表示されてしまうことです。
解決できず困っています。どなたかご教授いただければ幸いです。よろしくお願い致します。
該当のソースコード
swift
1 // CollectionViewのCellの数を返す 2 func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 3 return allArray.count 4 } 5 6 // collectionViewのCellの内容を返す 7 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 8 let cell = totalXib.totalCollectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! CollectionViewCell 9 // もしallArrayのcountが0だったら 10 if allArray.count == 0 { 11 print("DEBUG_PRINT: allArrayのデータが0です") 12 } else if allArray.count > 0 { 13 print("DEBUG_PRINT: allArrayのデータが0以上です") 14 15 // for文でallArrayをloopさせ全ての要素を取り出す 16 for allArrayValue in allArray { 17 var image: UIImage 18 image = UIImage(data: Data(base64Encoded: allArrayValue.imageString, options: .ignoreUnknownCharacters)!)! 19 20 cell.imageView.image = image 21 } 22 } 23 return cell 24 }
試したこと
for文の部分でimageを配列で定義し、 cell.imageView.image = image[indexPath.row]
で値を格納しようとしましたが、 index out of range
のシグバートエラーが発生してしまいました。この時に配列の数以上のものを取得しようとしていたわけでもなくエラーが出てしまった為、なぜそのようなエラーが発生したかもはっきりと理解出来ずにいます。そこの部分ももしよろしければ教えて頂けるとありがたいです。
補足情報(FW/ツールのバージョンなど)
Xcode Version 9.3.1
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー