首页 > 解决方案 > 我想从 API 端点下载图像并将其存储在结构变量 iOS 中

问题描述

我正在使用电影数据库搜索电影。

1)我根据搜索参数下载电影

2)出列单元格时,我下载了相应的海报

我的问题是我想将图像存储在结构的对象中,以便我可以在我的应用程序中重新使用它

let cell = tableView.dequeueReusableCell(withIdentifier: "searchResult", for: indexPath) as! SearchCell

var currentMedia = AppModel.searchList[indexPath.section]

searchList 保存媒体模型类型的数据

if let posterPath = currentMedia.posterPath {
              TMDBClient.downloadPosterImage(path: posterPath) { data, error in
                  guard let data = data else {
                      return
                  }
                  let image = UIImage(data: data)
                cell.MediaPoster.image = image
                currentMedia.posterImage = image

              }
          } 

我的问题是即使在我执行currentMedia.posterImage = imageUIImage 之后也不存储在结构中。

这是 MediaModel 的结构

struct MediaModel {
    var posterImage: UIImage?
    let posterPath: String?
    let overview: String
    let releaseDate: String
    let Title: String
    let language: String
    let voteAverage: Double

    init(posterImage:UIImage,posterpath: String ,overview:String,release:String,title:String,language:String,vote:Double) {
        self.posterImage = posterImage
        self.posterPath = posterpath
        self.language = language
        self.overview = overview
        self.releaseDate = release
        self.Title = title
        self.voteAverage = vote

    }
}

标签: iosswiftuikit

解决方案


显然将结构更改为类解决了重新分配的问题。

我假设,众所周知,结构按值传递,类按引用传递,因此分配结构实例只是分配对象的副本而不是引用

更多关于这里:

Swift 类与结构


推荐阅读