SwiftyJSON 在完成时显示 progressHUD
SwiftyJSON showing progressHUD at completion
我在使用 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!)
}
您应该在后台线程中解析 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()
}
}
}
我在使用 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!)
}
您应该在后台线程中解析 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()
}
}
}