У меня возникла эта проблема только для процесса входа. В текущем контроллере подключаться к внешней базе данных (после добавления имени пользователя и пароля), а после получения ответа приложение должно отклонить текущий контроллер и открыть следующий диспетчер представлений. Я получаю ответ сервера правильно.Невозможно открыть следующий ViewController - *** Ошибка утверждения - [UIKeyboardTaskQueue waitUntilAllTasksAreFinished]
let postString = “lgn=sedr&UNAME=\(userName)&PASSWORD=\(password)"
let request=NSMutableURLRequest(URL: NSURL(string:url)!)
request.HTTPMethod = "POST";
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request,completionHandler:{ (data,response,error) -> Void in
print(NSThread.isMainThread())
if error != nil {
// print("error=\(error)")
return
}
var parsingError: NSError?
if let dictionary = NSJSONSerialization.JSONObjectWithData(data,options: nil,error: &parsingError) as NSDictionary? {
println("dic: \(dictionary)")
if var suc:AnyObject=dictionary["success"] {
println("success: \(suc)")
if((suc as AnyObject! as Int)==1) {
if let userID = dictionary["userId"] {
println("userid: \(userID)")
//Save data
NSUserDefaults.standardUserDefaults().setObject("true",forKey:"isLogged");
NSUserDefaults.standardUserDefaults().setObject(userID,forKey:"userID");
NSUserDefaults.standardUserDefaults().synchronize();
var storyboard: UIStoryboard = UIStoryboard (name: "Main", bundle: nil)
var vc: UIViewController = storyboard.instantiateViewControllerWithIdentifier("BControllerID") as UIViewController
self.presentViewController(vc ,animated: true, completion: nil)
} else {
self.displayErrorAlert("Oops! Error");
}
}
}
}
});
task.resume();
Это журнал ошибок я получил:
2016-12-12 14:14:42.911 appService[39180:1705287] *** Assertion failure in -[UIKeyboardTaskQueue waitUntilAllTasksAreFinished], /SourceCache/UIKit_Sim/UIKit-3318.93/Keyboard/UIKeyboardTaskQueue.m:374
2016-12-12 14:14:42.917 appService[39180:1705287] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UIKeyboardTaskQueue waitUntilAllTasksAreFinished] may only be called from the main thread.'
У меня есть несколько контроллеров сделать подобный процесс, но я только получаю это исключение для этого контроллера.
Как обнаружено в Интернете, эта ошибка возникает из-за отсутствия соответствующих утверждений, а не для использования основного потока обновлений UI. Я проверил все компоненты, и все они присутствуют. Я думаю, это связано с тем, что не используется основной поток. Но я не знаю, как это решить.
Спасибо за поддержку. –