使用Swift和Xcode 6.4,我正在创建一个登录系统。它运作良好。我从网站获取XML数据并检查用户是否已登录。
func parser(parser: NSXMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) {
if elementName == "isLoggedIn" {
if elementValue == "true" {
success = true
println(success)
println("IS HERE")
self.performSegueWithIdentifier("LoginIsOk", sender: nil)
}else if elementValue == "false"{
success = false
println(success)
}
elementValue = nil
}
}
当我运行APP时,需要1秒钟来“println(”IS HERE“)”。 所以我假设。
self.performSegueWithIdentifier("LoginIsOk", sender: nil)
之后执行。但是显示另一个ViewController需要5秒钟。
如果我这样做,但在UIButton中,例如,点击它之后,它会立即显示第二个ViewController。
知道为什么在func解析器中花了这么长时间?感谢。
答案 0 :(得分:3)
尝试将其置于不同的线程中:
dispatch_async(dispatch_get_main_queue(), {
self.performSegueWithIdentifier("LoginIsOk", sender: nil)
})
出于这个原因,所有UI调用都应放在主线程中 - 我们希望UI能够快速实现!