代码之家  ›  专栏  ›  技术社区  ›  stevenyuser

@MainActor不适用于捕获docatch的一部分

  •  1
  • stevenyuser  · 技术社区  · 3 年前

    我目前正在使用@MainActor的一个函数在我的SwiftUI应用程序中发布对我的UI的更改。不幸的是,该属性只在docatch块的do部分的主队列上调度UI更新。当我在catch块(即errorMessage)中发布UI更改时,它会说“不允许从后台线程发布更改”,尽管我将整个函数包装在@MainActor属性中。

    有办法解决这个问题吗?@MainActor不应该在catch语句中应用UI更改吗?我应该用它吗。收到(在:)错误消息?

    @MainActor
    func signUp(creds: CredentialDetails) async {
        do {
            let authDataResult = try await Auth.auth().createUser(withEmail: creds.email, password: creds.password)
        } catch {
            print("There was an issue when trying to sign in: \(error)")
            self.errorMessage = error.localizedDescription
        }
    }
    
    0 回复  |  直到 3 年前