JuSeok

swiftui_RestAPI

SwiftUI RestAPI GET으로 json 데이터 받기

SwiftUI에서 RestAPI를 통해 json 데이터를 받아서 처리해야할 때 사용한 코드이다.

RestAPI GET통신

import SwiftUI

class ProgramCardViewModel: ObservableObject{
    init() {
        fetchPrograms()
    }
    
    let url = "http://localhost:8080/user/all"
    
    @Published var Programs: [Program] = []
    
    func fetchPrograms(){
        guard let url = URL(string: url) else { return }
        URLSession.shared.dataTask(with: url) { (data, resp, err) in
            DispatchQueue.main.async {
                self.Programs = try! JSONDecoder().decode([Program].self, from: data!)
            }
        }.resume()
    }
    
    func getPrograms() -> [Program] {
        return Programs
    }
}

url에 주소를 저장한 후 URLSession을 통해 데이터를 불러와 JSONDecoder를 이용해 json 형태로 만들었다.

해당 클래스가 생성될 때 서버에서 데이터를 불러와야 했기 때문에 init에서 함수를 호출해 주었다.

불러온 데이터는 Program배열에 저장 되는데 해당 변수를 @Published로 선언해야 변화를 감지할 수 있다.



뷰에선 해당 클래스를 선언해준 후 getPrograms 을 통해 배열을 받아와 ForEach로 뿌려주면 된다.

Tags