我试图检索一个值(让海报: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;而不是整个对象值?