Как мне назвать асинхронную функцию на главном актере?IOS

Программируем под IOS
Anonymous
Как мне назвать асинхронную функцию на главном актере?

Сообщение Anonymous »

ОК ... поэтому я хочу вызвать асинхронную функцию в моей функции .onapear

Код: Выделить всё

import SwiftUI
import RealityKit
import RealityKitContent
import MyFoo

struct ContentView: View {

@Environment(MyFoo.self) private var foo: MyFoo

@State private var message : String?

var body: some View {
VStack {
Model3D(
named: "Scene",
bundle: realityKitContentBundle
).padding(.bottom, 50)

if let msg = self.message {
Text(msg)
} else {
Text("No message yet.")
}
}
.padding()
.onAppear(perform: connectToMyFoo)
}

@MainActor
private func connectToMyFoo() {
DispatchQueue.main.async {
Task {
await self.foo.initialize()
// ...
}
}
}
}
Но Swift мне не позволит. синхронное закрытие. Затем, если я попытаюсь запустить задачу в этом, чтобы обойти ее, она теряет изоляцию и жалуется, что < /p>

Прохождение аргумента не поддающегося типа 'myfoo' Вне основного актера, изолированного контекстом, может вводить расы данных; Это ошибка в языковом режиме Swift 6

Сообщение, которое я растут о том, как я потратил гораздо больше времени, чем я хотел бы признать, пытаясь заставить его уйти. ) в главном актере изолят , когда весь кровавый язык не хочет сотрудничать?!
запустить foo.initialize () . Сделайте это на главном актере. Подождите, пока это не будет сделано. Это не должно быть так чертовски тяжело.

Подробнее здесь: https://stackoverflow.com/questions/794 ... main-actor

Вернуться в «IOS»