在使用SwiftyJSON解析JSON时,我很难正确显示progressHUD,因为即使在显示progressHUD之后我还没有等待几秒钟,应用程序似乎也会崩溃。
如果我在进度条消失后等待几秒钟就不会崩溃,这意味着我必须对调度异步队列做错事。在解析API之后,我不确定SwiftyJSON的完成处理程序在哪里。
崩溃的原因是数组索引超出范围,因为我的数据尚未正确加载。
override func viewDidLoad() {
super.viewDidLoad()
MBProgressHUD.showHUDAddedTo(self.view, animated: true)
dispatch_async(dispatch_get_main_queue()) {
self.parseAPI()
MBProgressHUD.hideHUDForView(self.view, animated: true)
self.myTable.reloadData()
}
}
func parseAPI() {
let url = NSURL(string: "https://www.kimonolabs.com/api/e0uyfycg?apikey=7v9FHVAWKgAspMtVwoTNvIwzmWiPyj0F")
let dataFromNetwork = NSData(contentsOfURL: url!)
let json = JSON(data: dataFromNetwork!)
}
答案 0 :(得分:0)
您应该在后台线程中解析API,否则它将在主线程上解析并阻止UI直到它完成。
我看了一下MBProgressHUD页面,看起来像这样:
override func viewDidLoad() {
super.viewDidLoad()
MBProgressHUD.showHUDAddedTo(self.view, animated: true)
dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_LOW, 0)) {
self.parseAPI()
dispatch_async(dispatch_get_main_queue()) {
MBProgressHUD.hideHUDForView(self.view, animated: true)
self.myTable.reloadData()
}
}
}