【发布时间】:2017-12-16 15:39:53
【问题描述】:
我想创建包含我所有请求的AlamofireWebService 管理器,我只在viewControllers 中使用此类的类函数,并在viewController 中使用响应。
例如viewController 中的类似内容:
let cardResponse : String?
cardResponse = WebServiceManager.shared.getCardTitle()
我搜索并发现我应该在我的函数中使用转义completionHandler,我写了这个:
import Foundation
import Alamofire
import SwiftyJSON
class WebServiceManager {
static let shared : WebServiceManager = WebServiceManager()
let apiEndPoint = "My URL"
func getCardTitle(completionHandler: @escaping (NSDictionary?, Error?) -> ()) {
Alamofire.request("\(apiEndPoint)")
.responseJSON { response in
switch response.result {
case .success(let value):
print("from .success \(value)")
completionHandler(value as? NSDictionary, nil)
case .failure(let error):
completionHandler(nil, error)
}
}
}
}
在成功的情况下,打印工作正常,但在 viewController 中,它只打印 nil。
我的viewController:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
WebServiceManager.shared.getCardTitle() { responseObject, error in
// use responseObject and error here
print("responseObject = \(responseObject); error = \(error)")
return
}
}
我应该怎么做才能在viewController打印我的回复?
【问题讨论】:
标签: ios swift3 uiviewcontroller alamofire