###前提・実現したいこと
エラーを消したい。
テーブルビューにイメージとテキストを表示したい。
###発生している問題・エラーメッセージ
<ViewController.swift> cell.setCell(resultArrays: resultArray[indexPath.row], sResultArrays: sResultArray[indexPath.row]) 上記箇所で以下のエラーが出ています。 Cannot convert value of type 'UIImage' to expected argument type 'String'
###該当のソースコード
import UIKit class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { @IBOutlet var tableView: UITableView! var resultArray = [UIImage]() var newResultArray: [Data]! var sResultArray = [String]() override func viewDidLoad() { super.viewDidLoad() tableView.delegate = self tableView.dataSource = self } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) if UserDefaults.standard.object(forKey: "sArray") != nil { sResultArray = UserDefaults.standard.object(forKey: "sArray") as! [String] } if UserDefaults.standard.object(forKey: "douga") != nil { newResultArray = UserDefaults.standard.object(forKey: "douga") as! [Data] resultArray.removeAll() for d in newResultArray { let image = UIImage(data: d) if let i = image { resultArray.append(i) } } } tableView.reloadData() } func numberOfSections(in tableView: UITableView) -> Int { return 1 } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return resultArray.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for:indexPath) as! CustomTableViewCell cell.setCell(resultArrays: resultArray[indexPath.row], sResultArrays: sResultArray[indexPath.row]) return cell } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }
import UIKit class CustomTableViewCell: UITableViewCell { @IBOutlet weak var myImageView: UIImageView! @IBOutlet weak var myTextView: UITextField! override func awakeFromNib() { super.awakeFromNib() // Initialization code } override func setSelected(_ selected: Bool, animated: Bool) { super.setSelected(selected, animated: animated) // Configure the view for the selected state } /// 画像・タイトル・説明文を設定するメソッド func setCell(resultArrays: String, sResultArrays: String) { myImageView.image = UIImage(named: resultArrays) myTextView.text = sResultArrays } }
###補足情報(言語/FW/ツール等のバージョンなど)
Xcode Version 9.2 (9C40b)
タグは Swift2 ではなく Swift にして下さい。あと、iOSのタグも追加した方が良いと思います。
ありがとうございます。修正をします。ちなみに、iOSのタグとはなんでしょうか。
resultArrayから画像を取り出そうとしたり、文字列(ファイル名)を取り出そうとしたりしていますが、実際には何が入っているのでしょうか?
resultArrayから画像を取り出したいと考えています。私自身で気になっているのは、let img = UIImage(named: resultArray[indexPath.row]as! String)の部分です。画像を取り出すのでas! Stringは外したいのですが、外すとCannot convert value of type 'UIImage' to expected argument type 'String'というエラーが出てしまいます。
エラーを見ると、resultArray の中身はString型のようですが?画像ではなくファイル名が入っているのではないのですか?
var resultArray = [UIImage]()と宣言していますし、ファイル名を入れてはないのですが、他に考えられることはありませんか。
あぁ、失礼。エラーメッセージを読み間違えてました。resultArrayの中身はUIImageで間違いないです。