2015-09-29 3 views
0

Я разрабатываю приложение Swift iOS, когда я пытался нажать кнопку входа в систему, ему нужно вытащить информацию пользователя из базы данных MySQL и проверьте с предоставленными пользователем значениями. Я делаю все это хорошо. После проверки учетных данных мне нужно перейти к другому контроллеру представления, но, к сожалению, мое приложение разбилось в этот момент и дало ошибку ниже.Приложение Swift iOS потерпело крах, когда я нажал на кнопку, которая должна взять меня на другой viewcontroller

2015-09-29 18:15:43.839 iOSBudgetManager[2998:66920] *** Assertion failure in -[UIKeyboardTaskQueue waitUntilAllTasksAreFinished], /SourceCache/UIKit_Sim/UIKit-3347.44.2/Keyboard/UIKeyboardTaskQueue.m:374 
2015-09-29 18:15:43.867 iOSBudgetManager[2998:66920] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UIKeyboardTaskQueue waitUntilAllTasksAreFinished] may only be called from the main thread.' 
*** First throw call stack: 
(
    0 CoreFoundation      0x000000010e67cc65 __exceptionPreprocess + 165 
    1 libobjc.A.dylib      0x0000000110429bb7 objc_exception_throw + 45 
    2 CoreFoundation      0x000000010e67caca +[NSException raise:format:arguments:] + 106 
    3 Foundation       0x000000010ed5b98f -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 195 
    4 UIKit        0x000000010f8b57d6 -[UIKeyboardTaskQueue waitUntilAllTasksAreFinished] + 151 
    5 UIKit        0x000000010f356912 -[UIKeyboardImpl setDelegate:force:] + 473 
    6 UIKit        0x000000010f6014ad -[UIPeripheralHost(UIKitInternal) _reloadInputViewsForResponder:] + 1002 
    7 UIKit        0x000000010f609834 -[UIPeripheralHost(UIKitInternal) _preserveInputViewsWithId:animated:reset:] + 504 
    8 UIKit        0x000000010f2994f1 -[UIViewController _presentViewController:modalSourceViewController:presentationController:animationController:interactionController:completion:] + 623 
    9 UIKit        0x000000010f29a76e -[UIViewController _presentViewController:withAnimationController:completion:] + 3079 
    10 UIKit        0x000000010f29c6c1 __62-[UIViewController presentViewController:animated:completion:]_block_invoke + 132 
    11 UIKit        0x000000010f29c5e5 -[UIViewController presentViewController:animated:completion:] + 229 
    12 iOSBudgetManager     0x000000010df507c0 _TFFC16iOSBudgetManager14ViewController13WelcomesigninFS0_FCSo8UIButtonT_U_FTGSQCSo6NSData_GSQCSo13NSURLResponse_GSQCSo7NSError__T_ + 6752 
    13 iOSBudgetManager     0x000000010df50c03 _TTRXFo_oGSQCSo6NSData_oGSQCSo13NSURLResponse_oGSQCSo7NSError__dT__XFo_iTGSQS__GSQS0__GSQS1____iT__ + 51 
    14 iOSBudgetManager     0x000000010df4c131 _TPA__TTRXFo_oGSQCSo6NSData_oGSQCSo13NSURLResponse_oGSQCSo7NSError__dT__XFo_iTGSQS__GSQS0__GSQS1____iT__ + 81 
    15 iOSBudgetManager     0x000000010df50c33 _TTRXFo_iTGSQCSo6NSData_GSQCSo13NSURLResponse_GSQCSo7NSError___iT__XFo_oGSQS__oGSQS0__oGSQS1___dT__ + 35 
    16 iOSBudgetManager     0x000000010df50c9a _TTRXFo_oGSQCSo6NSData_oGSQCSo13NSURLResponse_oGSQCSo7NSError__dT__XFdCb_dGSQS__dGSQS0__dGSQS1___dT__ + 90 
    17 CFNetwork       0x00000001117d8beb __49-[__NSCFLocalSessionTask _task_onqueue_didFinish]_block_invoke + 157 
    18 Foundation       0x000000010ed7f57f __NSBLOCKOPERATION_IS_CALLING_OUT_TO_A_BLOCK__ + 7 
    19 Foundation       0x000000010ecc00b2 -[NSBlockOperation main] + 98 
    20 Foundation       0x000000010eca2774 -[__NSOperationInternal _start:] + 645 
    21 Foundation       0x000000010eca2383 __NSOQSchedule_f + 184 
    22 libdispatch.dylib     0x0000000110b2b614 _dispatch_client_callout + 8 
    23 libdispatch.dylib     0x0000000110b126a7 _dispatch_queue_drain + 2176 
    24 libdispatch.dylib     0x0000000110b11cc0 _dispatch_queue_invoke + 235 
    25 libdispatch.dylib     0x0000000110b153b9 _dispatch_root_queue_drain + 1359 
    26 libdispatch.dylib     0x0000000110b16b17 _dispatch_worker_thread3 + 111 
    27 libsystem_pthread.dylib    0x0000000110e98a9d _pthread_wqthread + 729 
    28 libsystem_pthread.dylib    0x0000000110e963dd start_wqthread + 13 
) 
libc++abi.dylib: terminating with uncaught exception of type NSException 
+2

Пожалуйста, разместить соответствующий код Apple, такие как обработчик события кнопки. – Dai

+0

Не могли бы вы выслать код, относящийся к вашей кнопке и вашему сегменту? Вероятно, вам нужно завернуть свой segue в обработчике завершения, чтобы убедиться, что весь фоновый код завершен. – Caleb

ответ

0

Ключом здесь является то, что ошибка отмечает, что ваш код пытается обновить пользовательский интерфейс в приложения из потока, отличного от основного потока.

2015-09-29 18: 15: 43,867 iOSBudgetManager [2998: 66920] Согласующий приложения из-за неперехваченное исключение 'NSInternalInconsistencyException', причины: «- [UIKeyboardTaskQueue waitUntilAllTasksAreFinished] может быть вызван только от основная нить. '

После проверки учетных данных мне нужно, чтобы перейти к другому контроллеру представления, но, к сожалению, мое приложение получать разбился в этой точке и учитывая ошибку ниже.

Где бы вы ни называли код для перехода на новый контроллер просмотра, вам необходимо обернуть этот вызов вызовом dispatch_async в свой основной поток - см. Код ниже.

dispatch_async(dispatch_get_main_queue(), { 
    //View controller code 
    self.presentViewController(yourNewViewController, animated: true, completion: nil) 
}) 

Если вам нужно более подробно прочитать Grand Central Dispatch (GCD) Reference

Смежные вопросы