我正在嘗試將影像從表格視圖單元格顯示到另一個控制器。我正在使用表格視圖單元格來顯示影像、標題和其他屬性。當使用單擊表格單元格時,我想在另一個控制器中重定向用戶并顯示這些屬性。我正在嘗試訪問定義的方法,但出現以下錯誤無法分配“資料”型別的值?輸入“UIImage?” 在 didSelectRow 函式中。資料來自 API。這是 JSON 結構。
import Foundation
struct Movie: Decodable {
let originalTitle: String
let overview: String
let posterPath: String
enum CodingKeys: String, CodingKey {
case originalTitle = "original_title"
case overview
case posterPath = "poster_path"
}
}
這是我定義的用于檢索這些值的方法。
func getTitle(by row: Int) -> String? {
return movies[row].originalTitle
}
func getOverview(by row: Int) -> String? {
return movies[row].overview
}
func getImageData(by row: Int) -> Data? {
return cache[row]
}
這是我將資料轉換為影像的單元格屬性。
class MovieViewCell: UITableViewCell {
static let identifier = "MovieViewCell"
@IBOutlet weak var movieImage: UIImageView!
@IBOutlet weak var movieTitle: UILabel!
@IBOutlet weak var movieOverview: UILabel!
func configureCell(title: String?, overview: String?, data: Data?) {
movieTitle.text = title
movieOverview.text = overview
if let imageData = data{
movieImage.image = UIImage(data: imageData)
}
}
}
這是 didSelectRow 函式。
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let dc = storyboard?.instantiateViewController(withIdentifier: "MovieDeatilsViewController") as! MovieDeatilsViewController
let row = indexPath.row
dc.titlemovie = presenter.getTitle(by: row) ?? ""
dc.overview = presenter.getOverview(by: row) ?? ""
dc.imagemovie = presenter.getImageData(by: row)
self.navigationController?.pushViewController(dc, animated: true)
}
}
這是我要在其中顯示詳細資訊的詳細資訊視圖控制器代碼。
class MovieDeatilsViewController: UIViewController {
@IBOutlet weak var movieImage: UIImageView!
@IBOutlet weak var movieTitle: UILabel!
@IBOutlet weak var movieOverview: UILabel!
var titlemovie = ""
var overview = ""
var imagemovie :UIImage?
override func viewDidLoad() {
super.viewDidLoad()
movieTitle.text = titlemovie
movieOverview.text = overview
movieImage.image = imagemovie
}
}
這是錯誤的螢屏截圖。

uj5u.com熱心網友回復:
如果您查看 的方法簽名getImageData:,您會看到它回傳Data?。相反,您的imagemovie財產需要一個UIImage?. 看看問題出在哪里?
func getImageData(by row: Int) -> Data? {
var imagemovie :UIImage?
您首先必須將 type 轉換為類似的值,而不是Data?為您的屬性分配一個值:imagemovieData?UIImage?
dc.imagemovie = UIImage(data: presenter.getImageData(by: row)!)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/425589.html
