import SwiftUI
import Observation
struct ContentView: View {
@State var vm = ViewModel()
var body: some View {
VStack {
Image(systemName: "globe")
.imageScale(.large)
.foregroundStyle(.tint)
Text("Hello, world!")
}
.padding()
}
}
@Observable class ViewModel {
struct TestInfo {
var myId:Int
}
@MainActor var info:TestInfo?
func setupInfo() async {
var tmp:TestInfo?
await CoreData.shared.context.perform {
/// some core data work and then we set tmp
tmp = TestInfo(myId: ....)
}
await MainActor.run {
info = tmp /// ERROR: Reference to captured var 'tmp' in concurrently-executing code
}
}
}
Я хотел бы знать, как исправить эту ошибку. Я настраиваю tmp в закрытии контекста основных данных и хочу затем установить для info значение tmp.
У меня есть следующий код: [code]import SwiftUI import Observation
struct ContentView: View {
@State var vm = ViewModel()
var body: some View { VStack { Image(systemName: "globe") .imageScale(.large) .foregroundStyle(.tint) Text("Hello, world!") } .padding() }
}
@Observable class ViewModel {
struct TestInfo { var myId:Int }
@MainActor var info:TestInfo?
func setupInfo() async {
var tmp:TestInfo?
await CoreData.shared.context.perform {
/// some core data work and then we set tmp tmp = TestInfo(myId: ....) }
await MainActor.run { info = tmp /// ERROR: Reference to captured var 'tmp' in concurrently-executing code }
}
} [/code] Я хотел бы знать, как исправить эту ошибку. Я настраиваю tmp в закрытии контекста основных данных и хочу затем установить для info значение tmp.