Ben*_*Ben 3 ios firebase dispatch-async swift firebase-authentication
我很难搞清楚如何修复"此应用程序正在从后台线程修改自动布局引擎"错误.任何帮助是极大的赞赏.
我尝试使用这个类似问题概述的方法来使用dispatch_async(dispatch_get_main_qeueu()),但它没有解决问题.我使用不正确吗?
从调试开始,我已经发现Firebase调用重置用户密码至少是问题的一部分.当我遗漏该代码时,没有错误.
相关代码和完整错误消息如下:
//MARK: - Forgot Password Button Tapped
@IBAction func forgotPasswordButtonTapped(sender: AnyObject) {
let userEnteredEmail = emailTextField.text
//Have Firebase send email to reset password
dispatch_async(dispatch_get_main_queue(), {
FIRAuth.auth()?.sendPasswordResetWithEmail(userEnteredEmail!, completion: { error in
if error != nil {
//Tell user that the user name or password is incorrect.
let errorCode = error!.code
switch (errorCode) {
// Error code handling alerting user to issue.
}
}
else {
//Send user to the forgot password screen.
self.performSegueWithIdentifier("toForgotPasswordViewController", sender: self)
}
})
})
}
}
Run Code Online (Sandbox Code Playgroud)
抛出完整错误:
This application is modifying the autolayout engine from a background thread, which can lead to engine corruption and weird crashes. This will cause an exception in a future release.
Stack:(
0 CoreFoundation 0x000000010a87dd85 __exceptionPreprocess + 165
1 libobjc.A.dylib 0x000000010c6a5deb objc_exception_throw + 48
2 CoreFoundation 0x000000010a87dcbd +[NSException raise:format:] + 205
3 Foundation 0x000000010adf8b6b _AssertAutolayoutOnMainThreadOnly + 79
4 Foundation 0x000000010adf8a62 -[NSISEngine _optimizeWithoutRebuilding] + 49
5 Foundation 0x000000010ac57c0f -[NSISEngine optimize] + 46
6 Foundation 0x000000010ac5842d -[NSISEngine withBehaviors:performModifications:] + 245
7 UIKit 0x000000010b9e6adb -[UIView(AdditionalLayoutSupport) _withAutomaticEngineOptimizationDisabledIfEngineExists:] + 58
8 UIKit 0x000000010b9e761e -[UIView(AdditionalLayoutSupport) updateConstraintsIfNeeded] + 254
9 UIKit 0x000000010b9e8333 -[UIView(AdditionalLayoutSupport) _updateConstraintsAtEngineLevelIfNeeded] + 272
10 UIKit 0x000000010b19ca96 -[UIView(Hierarchy) _updateConstraintsAsNecessaryAndApplyLayoutFromEngine] + 159
11 UIKit 0x000000010b1ac980 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 703
12 QuartzCore 0x0000000109e05c00 -[CALayer layoutSublayers] + 146
13 QuartzCore 0x0000000109dfa08e _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 366
14 QuartzCore 0x0000000109df9f0c _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 24
15 QuartzCore 0x0000000109dee3c9 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 277
16 QuartzCore 0x0000000109e1c086 _ZN2CA11Transaction6commitEv + 486
17 QuartzCore 0x0000000109e1c378 _ZN2CA11Transaction14release_threadEPv + 224
18 libsystem_pthread.dylib 0x000000010d4d7387 _pthread_tsd_cleanup + 470
19 libsystem_pthread.dylib 0x000000010d4d6f63 _pthread_exit + 117
20 libsystem_pthread.dylib 0x000000010d4d5582 pthread_attr_getschedpolicy + 0
21 libsystem_pthread.dylib 0x000000010d4d3341 start_wqthread + 13
)
Run Code Online (Sandbox Code Playgroud)
感谢您的任何想法或想法!
试试这个:
FIRAuth.auth()?.sendPasswordResetWithEmail(userEnteredEmail!, completion: { error in
dispatch_async(dispatch_get_main_queue(), {
if error != nil {
//Tell user that the user name or password is incorrect.
let errorCode = error!.code
switch (errorCode) {
// Error code handling alerting user to issue.
}
}
else {
//Send user to the forgot password screen.
self.performSegueWithIdentifier("toForgotPasswordViewController", sender: self)
}
})
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5477 次 |
| 最近记录: |