我是Swift新手,对回调/关闭有疑问。在异步网络调用期间,不同的项目会在不同的时间出现。我想知道一个回调如何知道不会被执行,直到我们从请求中返回的所有内容都被返回?在异步调用完成后,知道如何等待回调/关闭?
编辑:
dispatch_async(dispatch_get_main_queue(), {
//Array to store HingeImage objects
var myImageArray = Array<HingeImage>()
for items in parsedResult {
//Create custom objects with values needed
let finalObjects = HingeImage(dictionary: items as! [String : AnyObject])
myImageArray.append(finalObjects)
}
// Callback completion
callback(hingeImages: hingeImageArray, error: nil)
})
编辑2:
class SecondViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
callTheCallBackAndGrabData()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func callTheCallBackAndGrabData() {
MainVC.requestWithCallback { (hingeImage, error) in
print(hingeImage)
}
}
}
它读取程序员的头脑,并做“正确的事情”™ – Avi
闭包不知道..你应该告诉他们什么时候执行它...... –
可能重复[Swift,从异步块的返回值](http:///stackoverflow.com/questions/26995757/swift-return-value-from-asynchronous-block) –