我正在处理从api获取数据的应用程序 我使用alamofire获取数据 我的问题是如何使应用程序等待数据提取完成
我使用以下代码来获取数据
class abc:NSOperation{
static let sharedInstance = abc()
func main() {
Alamofire.request(.GET, "http://playground.dzireinfotech.com/admin/event/getallevents", parameters: nil).response{
(request, response, data, error) in
if(error == nil){
let jsn = JSON(data: data!)
if let nn = jsn.array{
let a = nn.count
print("a\(a)")
for(var i=0; i<a; i++){
self.e_Id.append(jsn[i]["e_id"].string!)
self.e_date.append(jsn[i]["e_date"].string!)
self.e_time.append(jsn[i]["e_time"].string!)
self.e_title.append(jsn[i]["e_title"].string!)
self.e_image.append(jsn[i]["e_image"].string!)
self.e_description.append(jsn[i]["e_description"].string!)
self.e_num_table.append(jsn[i]["e_num_table"].string!)
self.imgx.append(self.ImgURL + (jsn[i]["e_image"].string!))
// self.e_latitude.append(jsn[i]["e_latitude"].string!)
// self.e_longitude.append(jsn[i]["e_longitude"].string!)
//self.e_status.append(jsn[i]["e_status"].string!)
}
}
if(self.imgx.count>0){
FirstViewController.sharedInstance.loadData(self)
}
}else{
print("Error")
}
}
}
上面的代码工作正常,但它在下面的代码中给出了问题
class pqr: UIViewController{
override func viewDidLoad() {
super.viewDidLoad()
abc.sharedInstance.main()
//I want to make wait here
imageUrls = abc.sharedInstance.imgx
let ab = abc.sharedInstance.img_number
print("ImageUrl\(imageUrls)")
print("Image Number\(ab)")
let urlx:NSURL = NSURL(string: imageUrls[ab])!
self.imageView.sd_setImageWithURL(urlx)
}
}
答案 0 :(得分:0)
将viewDidLoad
中依赖于长时间运行操作的所有代码移动到另一个方法,然后在长时间运行的进程的完成处理程序中调用该方法。
答案 1 :(得分:0)
您可以将所有这些代码放入viewdidload中,以便应用程序在该代码运行完毕之前不会打开。
您是否正在努力使应用程序停留在启动屏幕上,直到获取数据为止。
如果我是正确的,你应该把代码放在应该说的viewdidload函数中。
视图确实出现了然后在放置代码纠正我如果我错了我是新来的。
您可以分享代码的顶部。