没有从URLSession返回数据

时间:2019-11-29 23:59:23

标签: json swift api http

我在Postman上执行了相同的请求,并且效果很好。但是,当我运行此URLSession时,这里的数据为空(请参见DATA EMPTY标记):

import Foundation

struct PhotoResponse: Decodable {
    let results: [Photo]
}

class PhotoInteractor {
    static var shared = PhotoInteractor()
    var error: Error?

    func getPhotos(query: String, completionHandler: @escaping ([Photo], Error?) -> Void) {
        guard let url = URL(string: "https://api.unsplash.com/search/photos?query=o&page=1&per_page=30&") else {
            return
        }
        var request = URLRequest(url: url)
        request.setValue("Client-ID \(Config.shared.accessKey)", forHTTPHeaderField: "Authorization")

        URLSession.shared.dataTask(with: request) { data, response, error in
            //*** DATA EMPTY!!! ***
            if let data = data, let photos = self.photosFromJSONResponse(data) {
                completionHandler(photos, nil)
            }
        }.resume()
    }

    func photosFromJSONResponse(_ data: Data) -> [Photo]? {

        do {
            let photoResponse = try JSONDecoder().decode(PhotoResponse.self, from: data)
            return photoResponse.results
        } catch {
            self.error = error
        }
        return nil
    }

}

0 个答案:

没有答案