【发布时间】:2016-04-28 09:57:05
【问题描述】:
- 我的问题:
我正在尝试在 SubViewController 加载其视图之前通过 Alamofire 从服务器加载数据。写完代码,没能解决Alamofire的Async Feature的问题。在 Alamofire 完成工作之前,视图总是被加载到 SubViewController 中。
- 我的部分代码:
父视图控制器:
通过PrepareForSegue()引领SubViewController。
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "CellDetailSegue" {
if let indexPaths = self.dateCollectionView.indexPathsForSelectedItems() {
let subViewController = segue.destinationViewController as! SubViewConroller
}
}
子视图控制器:
测试其viewDidLoad()中的print()是否已经加载了数据,viewWillAppear()中的dataRequest()加载数据
class SubViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
var availablePeriods401 = [String]()
var availablePeriods403 = [String]()
var availablePeriods405 = [String]()
override func viewDidLoad() {
super.viewDidLoad()
self.dataRequest(self.availablePeriods401)
self.dataRequest(self.availablePeriods403)
self.dataRequest(self.availablePeriods405)
print(self.availablePeriods401.count)
print(self.availablePeriods403.count)
print(self.availablePeriods405.count)
}
func dataRequest(_ target: [String]) {
Alamofire.request(.POST, "http://httpbin.org/get", parameters: ["foo": "bar"]).responseJSON {
.
.
.
target = Result
}
}
}
- 问题描述:
加载视图后,无法为 SubViewController 中的三个变量分配有效值。
三个输出的结果都是0。
但如果我在dataRequest() 中设置print(),我可以获得有效计数。
- 我的问题:
如何确保Alamofire 完成其工作?
我应该把 Alamofire 请求函数放在哪里? viewWillApper()? viewDidApper()?
我应该在 ParentViewController 的PrepareForSegue() 中完成请求工作吗?
请教我如何解决这个问题。
非常感谢您的指导和时间。
伊桑乔
【问题讨论】: