Last active
July 6, 2024 12:24
-
-
Save benigumocom/ddf10c9464b2059de78943a80957a3bc to your computer and use it in GitHub Desktop.
【Swift6 Concurrency】 新しい @observable クラスの書き方を知らないやつwww 👉 https://android.benigumo.com/20240706/swift6-observable/
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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