I'm building a Swift app and testing in an Xcode Playground.  Calling the NYTimes Search API and trying to store its response in a struct. The code executes cleanly and no errors appear (I am using a do, try, catch), but I cannot print any properties from the resulting object (print(json.status)).
My hunch is that something is fishy with this line but I'm not sure what since no errors are printing from the catch statement
let task = URLSession.shared.dataTask(with: URL(string: url)!, completionHandler: { data, response, error in
Form the URL endpoint to make the API call:
func APICall() {
        
        let APIKey = "MY_API_KEY_GOES_HERE_BUT_IT'S_A_SECRET"
        let searchTerm = "A Super Bowl Sideshow: See the Ageless Man!"
        
        // Remove the spaces and convert them to percents
        guard let encodedSearchTerm = searchTerm.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed) 
           else {
              print("Error encoding search term in URL")
              return
        }
    
        let url = "https://api.nytimes.com/svc/search/v2/articlesearch.json?q=" + encodedSearchTerm + "&api-key=" + APIKey
        getData(from: url)
}
Data Task:
func getData(from url: String) {
    
    //I believe something is wrong with the following line but I'm not sure what it is
    let task = URLSession.shared.dataTask(with: URL(string: url)!, completionHandler: { data, response, error in
        
        guard let data = data, error == nil else {
            print("Error loading data")
            return
        }
        
        var result: NYTSearchResponse?
        
        do {
            
            result = try JSONDecoder().decode(NYTSearchResponse.self, from: data)
            
        } catch {
            print(error)
        }
        
        guard let json = result else {
            print("Error assigning result to json")
            return
        }
        
        //Try to print these from the resulting object but these commands do not print
        print(json.status)
        print(json.response.docs[0].abstract)
    })
    
    task.resume()
}
My NYTSearchResponse struct which mirrors the NYT API JSON response. It's pretty complicated, but I pasted the json response into https://app.quicktype.io/ to build the struct.
// MARK: - Welcome
struct NYTSearchResponse: Codable {
    let status, copyright: String
    let response: Response
}
// MARK: - Response
struct Response: Codable {
    let docs: [Doc]
    let meta: Meta
}
// MARK: - Doc
struct Doc: Codable {
    let abstract: String
    let webURL: String
    let snippet, leadParagraph, printSection, printPage: String
    let source: String
    let multimedia: [Multimedia]
    let headline: Headline
    let keywords: [Keyword]
    let pubDate: Date
    let documentType, newsDesk, sectionName, subsectionName: String
    let byline: Byline
    let typeOfMaterial, id: String
    let wordCount: Int
    let uri: String
    enum CodingKeys: String, CodingKey {
        case abstract
        case webURL = "web_url"
        case snippet
        case leadParagraph = "lead_paragraph"
        case printSection = "print_section"
        case printPage = "print_page"
        case source, multimedia, headline, keywords
        case pubDate = "pub_date"
        case documentType = "document_type"
        case newsDesk = "news_desk"
        case sectionName = "section_name"
        case subsectionName = "subsection_name"
        case byline
        case typeOfMaterial = "type_of_material"
        case id = "_id"
        case wordCount = "word_count"
        case uri
    }
}
// MARK: - Byline
struct Byline: Codable {
    let original: String
    let person: [Person]
    let organization: String?
}
// MARK: - Person
struct Person: Codable {
    let firstname: String
    let middlename: String?
    let lastname: String
    let qualifier, title: String?
    let role, organization: String
    let rank: Int
}
// MARK: - Headline
struct Headline: Codable {
    let main: String
    let kicker, contentKicker: String?
    let printHeadline: String
    let name, seo, sub: String?
    enum CodingKeys: String, CodingKey {
        case main, kicker
        case contentKicker = "content_kicker"
        case printHeadline = "print_headline"
        case name, seo, sub
    }
}
// MARK: - Keyword
struct Keyword: Codable {
    let name, value: String
    let rank: Int
    let major: String
}
// MARK: - Multimedia
struct Multimedia: Codable {
    let rank: Int
    let subtype: String
    let caption, credit: String?
    let type, url: String
    let height, width: Int
    let legacy: Legacy
    let subType, cropName: String
    enum CodingKeys: String, CodingKey {
        case rank, subtype, caption, credit, type, url, height, width, legacy, subType
        case cropName = "crop_name"
    }
}
// MARK: - Legacy
struct Legacy: Codable {
    let xlarge: String?
    let xlargewidth, xlargeheight: Int?
}
// MARK: - Meta
struct Meta: Codable {
    let hits, offset, time: Int
}
