Skip to content

Instantly share code, notes, and snippets.

@benigumocom
Last active July 6, 2024 12:24
Show Gist options
  • Save benigumocom/ddf10c9464b2059de78943a80957a3bc to your computer and use it in GitHub Desktop.
Save benigumocom/ddf10c9464b2059de78943a80957a3bc to your computer and use it in GitHub Desktop.
【Swift6 Concurrency】 新しい @observable クラスの書き方を知らないやつwww 👉 https://android.benigumo.com/20240706/swift6-observable/
import SwiftUI
struct TestObservable: View {
private var requester = Requester()
var body: some View {
VStack {
Text("\(requester.responseCode)")
Text("\(requester.responseBody)")
}
.task {
await requester.request()
}
}
}
@Observable
class Requester {
var responseCode = -1
var responseBody = "-"
private let url = URL(string: "https://wttr.in/?format=3")!
func request() async {
do {
let (data, response) = try await URLSession.shared.data(from: url)
responseCode = (response as! HTTPURLResponse).statusCode
responseBody = String(data: data, encoding: .utf8)!
} catch {
print(error)
}
}
}
#Preview {
TestObservable()
.padding()
.frame(width: 300, height: 200)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment