본문 바로가기
공부/스위프트

[스위프트] URLSession열고 데이터 받아와서 테이블뷰로 넘겨주고 테이블뷰에 데이터를 넣어서 보여주기 - 2

by 초코팅촉 2023. 9. 24.
728x90

여기서부턴 제가 만든 파일에 있는 내용을 그대로 갖다쓰겠습니다.

앞에서나 이 블로그의 다른곳에 써놓지 않아 이해가 잘 안될수도 있습니다.

1. performRequest 함수 완성

앞서 작성한 performRequest 함수를 완성합니다.

func performRequest(urlString: String) {
        if let url = URL(string: urlString) {
            let session = URLSession(configuration: .default)
            let task = session.dataTask(with: url) { (data, response, error) in
                if error != nil {
                    print(error)
                }
                if let safeData = data {
                    ViewController.weatherData = parseJSON(data: safeData)
                    
                    DispatchQueue.main.async {
                        self.delegate?.reloadWeatherData()
                    }
                }
            }
            task.resume()
        }
    }

dataTask부분에서 ViewController에 static 변수로 선언한 weatherData 구조체를 인스턴스화 한 weatherData에 데이터를 할당해줍니다. 그리고 그다음에 main 스토리보드와 연결된 ViewController함수에 구현된 reloadWeatherData()함수를 실행합니다. 해당함수에서는 화면에 각종 데이터를 뿌려주는 부분들을 전부 갱신하는 과정을 거칩니다.

 

이렇게 하면 데이터를 가져오고 그다음에 뷰를 새로고침하기때문에 화면에 데이터를 뿌려주는게 제일 마지막으로 실행되며 각종 뷰에 데이터가 정상적으로 표시됩니다.

 

지금와서 보면 되게 간단한거같은데 왜 그때는 그렇게 헤맸는지 모르겠네요

그때는 막 머리를 쥐어뜯으면서 왜안될까 하면서 진짜 맥북이랑 싸울라그랬는데ㅎㅎ;; 그러기엔 너무 비싸용ㅎㅎ;;

처음에 날씨앱 클론 해본다고 8월 초중순에 시작했는데 그때부터 계속 프로젝트 만들었다 지웠다 하면서 왜 안되는지 찾다가 작동방식같은거 찾아보면서 겨우 해결했었네요.

암튼 지금와서는 일단 1차적으로 큰 기능들은 구현 완료되었고 이제 세세한 디테일들이나 리팩토링, 기능추가구현만 남은 상태입니다.

 

여러분도 하다 막히는 부분이 있으면 왜안될까보다는 여태 작성했던 코드가 어떻게 작동하는지 남에게 설명할 수 있을까? 를 생각해보면서 작성했던 코드들의 작동루틴을 따라가는걸 먼저 해봅시다! 

 

 

 

swift - urlsession