Je présente le UIAlertController
sur le fil principal comme suit:
class HelperMethodClass: NSObject {
class func showAlertMessage(message:String, viewController: UIViewController) {
let alertMessage = UIAlertController(title: "", message: message, preferredStyle: .alert)
let cancelAction = UIAlertAction(title: "Ok", style: .cancel)
alertMessage.addAction(cancelAction)
DispatchQueue.main.async {
viewController.present(alertMessage, animated: true, completion: nil)
}
}
}
Et j'appelle la méthode depuis n'importe quel UIViewController
comme:
HelperMethodClass.showAlertMessage(message: "Any Message", viewController: self)
Je reçois la sortie correctement.
Mais en console je reçois le message ci-dessous:
[Assert] Impossible d'appeler avec asCopy = NO sur un thread non principal.
Y a-t-il quelque chose que j'ai mal fait ici ou que je peux ignorer ce message?
Éditer
Merci à @NicolasMiari:
L'ajout de code ci-dessous ne montre aucun message:
DispatchQueue.main.async {
HelperMethodClass.showAlertMessage(message: "Any Message", viewController: self)
}
Quelle peut être la raison pour laquelle il montrait auparavant le message dans la console?
Vous devriez appeler tout le code de showAlertMessage
dans la file principale:
class func showAlertMessage(message:String, viewController: UIViewController) {
DispatchQueue.main.async {
let alertMessage = UIAlertController(title: "", message: message, preferredStyle: .alert)
let cancelAction = UIAlertAction(title: "Ok", style: .cancel)
alertMessage.addAction(cancelAction)
viewController.present(alertMessage, animated: true, completion: nil)
}
}