SwiftUI는 iOS 개발에서 사용되는 최신 UI 프레임워크이며, 네트워크 요청과 API 통신을 구현하기 위해 사용할 수 있는 다양한 기능을 제공합니다. 이를 위해 URLSession, JSON 파싱 및 데이터 모델링을 사용할 수 있으며, 이를 조합하여 원하는 기능을 구현할 수 있습니다.
URLSession을 사용한 네트워크 요청
URLSession은 네트워크 요청을 생성하고 보내는 기능을 제공하는 Swift의 기본 네트워킹 API입니다. SwiftUI에서 URLSession을 사용하여 네트워크 요청을 처리하는 방법은 다음과 같습니다.
import SwiftUI
struct ContentView: View {
@State var posts: [Post] = []
var body: some View {
List(posts, id: \.id) { post in
Text(post.title)
}
.onAppear {
fetchPosts()
}
}
func fetchPosts() {
guard let url = URL(string: "https://api.example.com/posts") else { return }
URLSession.shared.dataTask(with: url) { (data, response, error) in
if let data = data {
do {
let posts = try JSONDecoder().decode([Post].self, from: data)
DispatchQueue.main.async {
self.posts = posts
}
} catch {
print(error)
}
}
}.resume()
}
}
struct Post: Codable, Identifiable {
let id: Int
let title: String
let body: String
}
위의 예제에서는 ContentView
에서 fetchPosts
함수를 호출하여 https://api.example.com/posts
로부터 데이터를 가져와 Post
모델의 배열을 만들고, SwiftUI의 List
를 사용하여 목록을 표시합니다.
JSON 파싱과 데이터 모델링
JSON 데이터를 Swift 객체로 변환하기 위해서는 JSONDecoder를 사용하여 데이터를 디코딩해야 합니다. 위의 예제에서는 Post
모델을 정의하고, JSONDecoder
를 사용하여 Post
배열을 디코딩합니다.
Codable
프로토콜을 준수하는 모델을 만들어 JSON 데이터에 매핑시킬 수 있습니다. 이를 통해 Swift의 타입 안전성을 유지하면서 JSON 데이터를 처리할 수 있습니다.
요약
SwiftUI에서 네트워크 요청과 API 통신을 구현하기 위해 URLSession과 JSON 파싱을 사용할 수 있습니다. URLSession을 사용하여 요청을 보내고, JSONDecoder를 사용하여 데이터를 디코딩하고 원하는 형태로 변환할 수 있습니다. 이를 활용하여 SwiftUI 앱에서 다양한 API를 사용할 수 있습니다.