我有以下情况:
涉及的课程是
步骤1)
override func viewDidLoad() {
super.viewDidLoad()
requestHandler.getData(view: self)
}
所以在这里,我的 RequestHandler 类的实例正在调用它的 getData() -function。
步骤2)
func getData(view: ViewController) {
let dataRequest = DataRequest()
dataRequest.getDataTree(handler: self) { response in
view.saveData(dataTree: reponse)
}
}
在我的类 RequestHandler 中的 getData 方法中,我正在创建所需Request-class的实例。在这种情况下,类 DataRequest 的实例。然后,该实例将其函数 getDataTree()分类,并通过调用 saveData() -function来处理对我的 ViewController 的响应。
步骤3)
import Foundation
import SwiftyJSON
import Alamofire
class DataRequest {
func getDataTree(handler: RequestHandler, completion: @escaping ([String:[String:[String:[SomeStruct]]]]) -> ()) {
let requestURL = constants.Url.dataURL
Alamofire.request(requestURL, method: .post, encoding: URLEncoding.default)
.validate()
.responseJSON(completionHandler: { response in
completion(self.getServices(jsonData: JSON(data: response.data!)))
})
}
private func getServices(jsonData: JSON) -> [String:[String:[String:[SomeStruct]]]] {
var serviceDict: [String:[String:[String:[SomeStruct]]]] = [:]
for (k, subJson):(String, JSON) in jsonData {
let key = k
let dict: [String:[String:[SomeStruct]]] = getNames(jsonData: subJson)
serviceDict[key] = dict
}
return serviceDict
}
..然后声明 getNames -function等,直到最后,数组中的SomeStruct对象也被解析。
现在您已获得背景信息,我的问题如下: 通过调试我发现函数 getDataTree 被调用并执行,但 getServices -function永远不会执行,尽管在完成块中被调用。
我不到一年前才开始做程序员,所以我的经验有限。我可能只是犯了一个非常微不足道的错误。
非常感谢您的帮助!