HTTP 요청 처리를 하는데 dataTask는 기본이 비동기 처리 입니다.
비동기를 동기로 바꾸는 옵션값 같은것이 없습니다.
그래서 세마포어로 처리 해야 합니다.
하면 할 수록 Swift 이상함 ㅋㅋ
import SwiftUI
import WebKit
struct IntroView: View {
var body: some View {
VStack {
}
.onAppear {
startMain()
}
}
func startMain() {
// HTTP 요청
let url = URL(string: Define.serverUrl + "/system/selectVersion.ajax")!
var request = URLRequest(url: url)
request.httpMethod = "GET"
// HTTP 요청 결과 처리
let semaphore = DispatchSemaphore(value: 0) // 세마포어 설정
let dataTask = URLSession.shared.dataTask(with: request) {data, response, error in
print("1111")
...
semaphore.signal() // 대기에서 깨어남
}
// DataTask 시작
dataTask.resume()
semaphore.wait() // 대기 시킴
print("2222")
}
}
이렇게 하면
1111
2222
출력 됩니다.
'개발 - iOS SwiftUI' 카테고리의 다른 글
iOS SwiftUI Xcode Firebase 패키지 추가 방법 (0) | 2023.10.19 |
---|---|
iOS SwiftUI HTTP POST 요청 후 JSON 응답 파싱 예제 (0) | 2023.10.18 |
iOS SwiftUI onAppear에서 뷰 화면 이동 예제 (0) | 2023.10.18 |
iOS SwiftUI HTTP GET 요청 후 JSON 응답 파싱 예제 (0) | 2023.10.16 |
iOS SwiftUI onAppear에서 Alert 예제 (0) | 2023.10.16 |