message d'erreur
Bonjour,
après une requête du type "getUrl" avec cette adresse "http://adresseIP/donnees_Bdd.php", j'arrive à récupérer des données d'une bdd sous forme d'une variable String.
​Mais si j'ajoute le code pour afficher ces variables dans les labels, mon programme met environ une vingtaine de seconde avant de m'afficher les labels avec une bonne dizaine de fois le code suivant
2017-02-15 14:12:38.949 accèsBdd[934:100465] This application is modifying the autolayout engine from a background thread after the engine was accessed from the main thread. This can lead to engine corruption and weird crashes.
Stack:(
0 CoreFoundation 0x000000010889ed4b __exceptionPreprocess + 171
1 libobjc.A.dylib 0x0000000105bb121e objc_exception_throw + 48
2 CoreFoundation 0x00000001089082b5 +[NSException raise:format:] + 197
3 Foundation 0x00000001058ab06c _AssertAutolayoutOnAllowedThreadsOnly + 180
4 Foundation 0x00000001056cc334 -[NSISEngine withBehaviors:performModifications:] + 31
5 UIKit 0x0000000106a4786e -[UIView(UIConstraintBasedLayout) _resetLayoutEngineHostConstraints] + 76
6 UIKit 0x0000000106145a8b -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 1192
7 QuartzCore 0x000000010b6debf8 -[CALayer layoutSublayers] + 146
8 QuartzCore 0x000000010b6d2440 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 366
9 QuartzCore 0x000000010b6d22be _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 24
10 QuartzCore 0x000000010b660318 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 280
11 QuartzCore 0x000000010b68d3ff _ZN2CA11Transaction6commitEv + 475
12 QuartzCore 0x000000010b68d87d _ZN2CA11Transaction14release_threadEPv + 593
13 libsystem_pthread.dylib 0x0000000109bad3dc _pthread_tsd_cleanup + 555
14 libsystem_pthread.dylib 0x0000000109bacf63 _pthread_exit + 117
15 libsystem_pthread.dylib 0x0000000109bab582 pthread_attr_getschedpolicy + 0
16 libsystem_pthread.dylib 0x0000000109ba9341 start_wqthread + 13
)
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Met nous du code, ça sera peut-être plus compréhensible et on trouvera l'erreur plus simplement ^^
L'erreur t'explique que tu essayes de changer ton UI dans un thread autre que le principal.
Tout ce qui implique changement UI doit se faire seulement et uniquement dans le main thread. Sinon tu as des latences ou ire un crash.
voilà le code complet
c'est lorsque j'ajoute les 2 lignes rouges que le problème apparaà®t
Et, ça y est !
Tu appelles self.decomposeResponseCode dans le thread d'exécution du dataTask.
Il faut, plutôt quelque chose comme :
Tu modifies l'UI. Cela doit se faire uniquement dans le mainthread, d'où l'erreur.
Donc, decomposeResponseCode(code:) est appelée dans la closure de dataTask(with:) {} Mais qui a dit que cette closure s'effectuait dans le main thread ?
Donc dans cette closure, quand tu vas appeler une modification de l'UI mets ça là -dedans :
@Larme - grillé ! ::)
c'est corrigé
Merci pour vos aides.
Il y'a des jours ou je trouve que c'était plus facile de construire des ponts en béton ::)
Jean-Luc