Quand j'utilise Swift4
dans Xcode 9
Donne moi
UIApplication.delegate doit être utilisé à partir du thread principal uniquement.
.... doit être utilisé à partir du fil principal uniquement
API d'interface utilisateur appelée à partir du groupe de threads en arrière-plan
Avertissement violet.
Mes codes;
var appDelegate = UIApplication.shared.delegate as! AppDelegate
public var context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
let prefs:UserDefaults = UserDefaults.standard
var deviceUUID = UIDevice.current.identifierForVendor!.uuidString
La ligne d'avertissement est;
public var context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
Un autre avertissement comme celui-ci;
let parameters = [
"tel": "\(self.phone.text!)"
] as [String : String]
Donne
UITextField.text doit être utilisé à partir du thread principal uniquement.
Même erreur encore ..
Comment puis-je le réparer? Une idée ?
Vous passez cet appel dans une file d'attente en arrière-plan. Pour réparer, essayez quelque chose comme…
public var context: NSManagedObjectContext
DispatchQueue.main.async {
var appDelegate = UIApplication.shared.delegate as! AppDelegate
context = appDelegate.persistentContainer.viewContext
}
Bien que ce soit une très mauvaise façon de procéder, vous utilisez votre délégué d'application comme variable globale (ce que nous savons tous est mauvais!).
Vous devriez envisager de passer le contexte de l'objet géré du contrôleur de vue au contrôleur de vue…
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions:
(window?.rootViewController as? MyViewController)?.moc = persistentContainer.viewContext
}
etc