TIL

[iOS]2025.05.08 URLSession, Alamofire

ioskkt 2025. 5. 8. 21:59
class NetworkManager {
        
    // 서버에서 데이터를 불러오는 메서드
    func fetchData<T: Decodable>(url: URL, completion: @escaping (T?) -> Void) {
        let session = URLSession(configuration: .default)
        session.dataTask(with: URLRequest(url: url)) { data, response, error in
            guard let data, error == nil else {
                print("데이터 로드 실패")
                completion(nil)
                return
            }
            let successRange = 200..<300
            if let response = response as? HTTPURLResponse, successRange.contains(response.statusCode) {
                guard let decodedData = try? JSONDecoder().decode(T.self, from: data) else {
                    print("JSON 디코딩 실패")
                    completion(nil)
                    return
                }
                completion(decodedData)
            } else {
                print("응답 오류")
                completion(nil)
            }
        }.resume()
    }
}
// Alamofire 
    func fetchData<T: Decodable>(url: URL, completion: @escaping (T?) -> Void) {
        AF.request(url)
            .validate(statusCode: 200..<300)
            .responseDecodable(of: T.self) { response in
                switch response.result {
                case .success(let decodedData):
                    completion(decodedData)
                case .failure(let error):
                    print("데이터 로드 실패: \(error.localizedDescription)")
                    completion(nil)
                }
            }
    }

'TIL' 카테고리의 다른 글

2025.05.19 트러블 슈팅(RxSwift 개인과제)  (0) 2025.05.19
[iOS]2025.05.12 RxSwift  (0) 2025.05.12
[iOS]2025.04.17 TIL  (0) 2025.04.17
[iOS]2025.04.15 TIL  (1) 2025.04.15
[iOS] 2024.04.14 TIL  (0) 2025.04.14