네트워크 통신 기초 코딩
import Foundation
// 네트워크 요청을 보낼 함수
func fetchData(from url: URL, completion: @escaping (Data?, URLResponse?, Error?) -> Void) {
URLSession.shared.dataTask(with: url) { (data, response, error) in
completion(data, response, error)
}.resume()
}
// JSON 데이터를 처리할 함수
func processJSONData(data: Data) {
do {
let json = try JSONSerialization.jsonObject(with: data, options: [])
if let jsonArray = json as? [[String: Any]] {
for item in jsonArray {
// JSON 데이터 처리 예시
if let name = item["name"] as? String {
print("Name: \\(name)")
}
if let age = item["age"] as? Int {
print("Age: \\(age)")
}
// 필요한 데이터를 처리하는 코드를 추가할 수 있습니다.
}
}
} catch {
print("Error parsing JSON: \\(error)")
}
}
// 네트워크 요청 보내기
if let url = URL(string: "<https://api.example.com/data>") {
fetchData(from: url) { data, response, error in
if let error = error {
print("Error fetching data: \\(error)")
return
}
guard let httpResponse = response as? HTTPURLResponse, (200...299).contains(httpResponse.statusCode) else {
print("Invalid response")
return
}
if let data = data {
// 받아온 데이터를 처리
processJSONData(data: data)
}
}
}
requestData
메소드는 네트워크 요청을 보내는 역할을 합니다.RequestController
인스턴스를 생성하고, 해당 인스턴스가 nil이 아닌지 확인합니다. 만약 nil이라면 네트워크 에러를 처리하고 함수를 종료합니다.makeRequest
메소드를 호출하고, 반환값이 nil이 아닌지 확인합니다. 만약 nil이라면 함수를 종료합니다.