Cannot convert value of type 'URLRequest' to expected argument type 'String'.

KIMTAEKON·2022년 2월 19일
0
post-thumbnail

고양이 갤러리 app 유튜브 강의를 보던 중에 xcode에서 에러가 발생했다.
아래의 코드스니펫은 에러가 발생한 코드의 전문이다.

//
//  CatService.swift
//  catCrawler
//
//  Created by Mac pro on 2022/02/10.
//

import Foundation


final class CatService {
    
    enum RequestError : Error {
        case networkError
    }
    
    func getCats(
        page : Int,
        limit : Int,
        completion: @escaping (Result<String, RequestError>) -> Void
    ) {
        
        var components = URLComponents(string: "https://api.thecatapi.com/v1/images/search")!
        components.queryItems = [
            URLQueryItem(name: "page", value: "\(page)"),
            URLQueryItem(name: "page", value: "\(page)")
        ]
        
        var request = URLRequest(url: components.url!)
        request.httpMethod = "GET"
        
        let task = URLSession.shared.dataTask(with: request) {
            data, response, error in
            
            guard error != nil else {
                completion(.failure(.networkError))
                return
                
            }
            
            guard let data = data else {
                    completion(.failure(.networkError))
                return
            }
            
            guard let response = String(data: data, encoding: .unicode) else {
                completion(.failure(.networkError))
                return
            }
            print(response)
           
            
            completion(.success(request))
        }
    }
}

여기에서 마지막줄의

completion(.success(request))

에서 발생한 에러 내용은
Cannot convert value of type 'URLRequest' to expected argument type 'String'. 이었는데
간단하게 해석하자면
URLRequest 의 타입을 String 타입으로 변환할 수 없다.

해결방법은

마지막줄의 request 를 response 로 바꿔주면 된다.

0개의 댓글