実現したいこと
国別で電話番号を選択する機能
発生している問題・分からないこと
開発したアプリにバックエンド開発をFirebaseでしていた時に国別で電話番号を選択機能を実装するときに起こりました。
エラー内容: Publishing changes from background threads is not allowed; make sure to publish values from the main thread (via operators like receive(on:)) on model updates.
エラーメッセージ
error
1Publishing changes from background threads is not allowed; make sure to publish values from the main thread (via operators like receive(on:)) on model updates.
該当のソースコード
Swift
1import SwiftUI 2import Firebase 3 4class AuthenticationViewModel: ObservableObject { 5 6 @Published var name = "" 7 @Published var year = Year(day: "",month: "",year: "") 8 @Published var country: Country = Country(isoCode: "US") 9 @Published var phoneNumber = "" 10 11 @Published var otpTet = "" 12 13 @Published var navigationTag: String? 14 15 @Published var isLoading: Bool = false 16 @Published var verificationCode: String = "" 17 18 @Published var errorMessage = "" 19 @Published var showAlert = false 20 21 func sendOtp()async { 22 if isLoading {return} 23 24 do { 25 isLoading = true 26 let result = try await PhoneAuthProvider.provider().verifyPhoneNumber("+\(country.phoneCode)\(phoneNumber)", uiDelegate: nil) 27 DispatchQueue.main.async { 28 self.isLoading = false 29 self.verificationCode = result 30 self.navigationTag = "VERIFICATION" 31 } 32 } 33 catch { 34 handleError(error: error.localizedDescription) 35 } 36 } 37 38 39 func handleError(error: String) { 40 DispatchQueue.main.async { 41 self.isLoading = false 42 self.errorMessage = error 43 self.showAlert.toggle() 44 } 45 } 46 47} 48
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
Google検索等で出てきたDispatchQueue.main.asyncで囲めも試しましたがうまくいきませんでした。
どなたかご教授お願いします。
補足
Swift Xcode Mac

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/03/07 10:02