回答編集履歴

1 for

fuzzball

fuzzball score 15227

2018/05/15 11:45  投稿

# 修正版の回答  
 
内側のループが不要です。  
`.imageString`(String型)を内側のfor文で分解してしまっていたためにCharactrer型になっていました。  
内側のループを削除することにより、`morningArrayValue.imageString`でBase64エンコード文字列を参照できるようになります。  
 
 
```swift  
for morningArrayValue in morningArray {  
   //for imageStringer in morningArrayValue.imageString { //※削除  
       var image: UIImage  
       image = UIImage(data: Data(base64Encoded: morningArrayValue.imageString, options: .ignoreUnknownCharacters)!)!  
 
       cell.imageView.image = image  
       print("DEBUG_PRINT: cellのイメージに値をセットしました。")  
       print("DEBUG_PRINT: \(String(describing: cell.imageView.image))")  
   //} //※削除  
}  
```  
 
# 最初の回答  
 
Base64のデコード(String→Data)か、Data→UIImageで失敗しています。
ひとまず、内側のループを下記のコードに置き換えてどうなるか教えて下さい。
```swift
for imageStringer in morningArrayValue.imageString {
   if let data = Data(base64Encoded: String(imageStringer), options: .ignoreUnknownCharacters) {
       if let image = UIImage(data: data) {
           print(image)
           /*
            cell.imageView.image = image
            print("DEBUG_PRINT: cellのイメージに値をセットしました。")
            print("DEBUG_PRINT: \(String(describing: cell.imageView.image))")
            */
       } else {
           print("error: data to image (count=\(data.count)")
       }
   } else {
       print("error: string to data [\(String(imageStringer).prefix(10))]")
   }
}
```
強制アンラップ`!`は使わないクセを付けた方がいいです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る