📘
【Swift6】「Sendable」絡みのエラーと意味
これまでは何の警告もでなかった以下のような簡単なコード。
struct TestWeatherView: View {
@State private var text = ""
private let url = URL(string: "https://wttr.in/?format=3")!
var body: some View {
Text(text)
.task {
let (data, _) = try! await URLSession.shared.data(from: url)
text = String(data: data, encoding: .utf8)!
}
}
}
警告でますよね。
Passing argument of non-sendable type '(any URLSessionTaskDelegate)?' outside of main actor-isolated context may introduce data races
調べると以下。
いわゆる「アクター境界」を越えているので、
data() の返り値は Sendable でなければなりません。
🤔 参考
Discussion