I'm pulling in some JSON data and displaying it in a UITableView (iOS/iPhone 8). It displays the image, title, and description of each value. I've successfully got that down, however, are having trouble pulling the image into a separate View Controller.
By that, I mean, when a cell on the first View Controller is tapped, another view controller opens to display just the information from that cell.
I've been able to make the title and description accessible via a global variable and an indexPath. But the same won't apply to an image, due to a conflict with strings.
I've listed below what I have successfully done with the title and description strings and then show my proposition (which doesn't work of course).
How can I get an image that has already been loaded and is in an array, to be accessible like I already have with the title and description, for use in another View Controller?
The code that formats and gathers values from the JSON:
if let jsonData = myJson as? [String : Any] { // Dictionary
    if let myResults = jsonData["articles"] as? [[String : Any]] {
        // dump(myResults)
        for value in myResults {
            if let myTitle = value["title"] as? String {
                // print(myTitle)
                myNews.displayTitle = myTitle
            }
            if let myDesc = value["description"] as? String {
                myNews.displayDesc = myDesc
            }
            if let mySrc = value["urlToImage"] as? String {
                // print(mySrc)
                myNews.src = mySrc
            }
            self.myTableViewDataSource.append(myNews)
            // dump(self.myTableViewDataSource)
            // GCD
            DispatchQueue.main.async {
                self.myTableView.reloadData()
            }
        }
    }
} 
Two variables I have outside of the class, in order to use them globally:
var petsIndex = ""
var petsDesc = "" 
The code that works with the UITableView and its cells:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
     let myCell = tableView.dequeueReusableCell(withIdentifier: "reuseCell", for: indexPath)
     let myImageView = myCell.viewWithTag(2) as! UIImageView
     let myTitleLabel = myCell.viewWithTag(1) as! UILabel
     myTitleLabel.text = myTableViewDataSource[indexPath.row].displayTitle
    let myURL = myTableViewDataSource[indexPath.row].src
    loadImage(url: myURL, to: myImageView)
    return myCell
}  
The code that I'm using to send the JSON values to another View Controller. I achieve this by utilizing those global variables:
// If a cell is selected, view transitions into a different view controller.
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    petsIndex = self.myTableViewDataSource[indexPath.row].displayTitle
    petsDesc = self.myTableViewDataSource[indexPath.row].displayDesc
    // Img needs to go here
     myIndex = indexPath.row
     performSegue(withIdentifier: "segue", sender: self)
 } 
Here's what I was doing to maybe solve my problem. I converted the string to a UIImage? or a UIImageView? and passed it as data. I left the variable empty and would change it as the data came available. That would occur, when the cell was clicked. Then inside of the second View Controller, I would utilize a an IBOutlet for the UIImageView:
// Variable outside of the class
var petsImg: UIImageView? = nil
petsImg = self.myTableViewDataSource[indexPath.row].src 
I'm stumped at this point. I have gotten errors about the image being a string and needed to be converted. And when it was converted, the variable always came back is empty or nil.
Update:
I just tried doing this. It works and doesn't throw any errors. However, I still get a value of nil
petsImg = UIImage(named: self.myTableViewDataSource[indexPath.row].src)