고양이 갤러리 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 로 바꿔주면 된다.