从对象检索特定值时,将返回整个对象而不是仅返回所需的值

时间:2017-02-02 21:29:41

标签: ios arrays swift object

我试图检索一个值(让海报:String?):

public struct GenrePosters: Decodable {

  public let poster : String? //This string is what I'm trying to get

  public init? (json: JSON) {

  self.poster = "poster_path" <~~ json
  }

此功能用于更新数据:

 static func updateGenrePoster(genreID: NSNumber, urlExtension: String, completionHandler:@escaping (_ details: [GenrePosters]?) -> Void){

let nm = NetworkManager.sharedManager

nm.getJSONData(type:"genre/\(genreID)", urlExtension: urlExtension, completion: {
  data in

  if let jsonDictionary = nm.parseJSONData(data)
  {
    guard let genrePoster = ResultsGenrePosters(json: jsonDictionary)

      else {
        print("Error initializing object")
        return
    }
    guard let posterString = genrePoster.results
      else {
        print("No such item")
        return
    }

    completionHandler(posterString)//Returns an array
  }
})

} }

上面的函数似乎正确地返回了一个数组,但它们的格式为:

  

GenrePosters(海报:可选(&#34; /e1mjopzAS2KNsvpbpahQ1a6SkSn.jpg"))

当我尝试使用海报字符串插入URL时,它会插入整个上面的值,而不仅仅是&#34; .jpg&#34;

  func updateUI()// updates Tableview IBOutlets
  {
    genreCatagoryLabel.text = genreData.name

    if let genreID = genreData.id {

      GenrePosters.updateGenrePoster(genreID: genreID, urlExtension: "movies", completionHandler: {posters in

        for poster in posters!{

          print(poster)// prints GenrePosters(poster: Optional("/e1mjopzAS2KNsvpbpahQ1a6SkSn.jpg")) instead of just "/e1mjopzAS2KNsvpbpahQ1a6SkSn.jpg"


          self.networkManager.downloadImage(imageExtension: "\(poster)",

            { (imageData) //imageData = Image data downloaded from web
              in
              let image = UIImage(data: imageData as Data)
              DispatchQueue.main.async(execute: { //Must update UI on main thread so have to get main queue
                self.mainImageView.image = image
              })
          })
        }

      })
    }

有没有办法让它只使用&#34; .jpg&#34;而不是整个对象值?

0 个答案:

没有答案