从服务器获取数据时如何使用typealias

How to use typealias when getting data from server

我正在尝试从服务器获取用户数据。在加载数据之前,应用程序不必显示任何视图。 我阅读了 typealias,但我不明白如何使用它。

我想要的:加载数据后,继续下一步。如果失败,重新加载数据。

这是我声明类型别名的方式

typealias onCompleted = () -> ()
typealias onFailed = () -> ()

这是我的请求代码

 func getUserData(_ completed: @escaping onCompleted, failed: @escaping onFailed){

        let fullURL = AFUtils.getFullURL(AUTHURL.getUserData)

        AFNetworking.requestGETURL(fullURL, params: nil, success: {
            (JSONResponse) -> Void in

            if let status = JSONResponse["status"].string {
                switch status{
                case Status.ok:
                    completed()
                    break
                default:
                    failed()
                    break
                }
            }
        })
    }

但是调用 getUserData 时如何在我的视图控制器上使用它?

假设您的自定义 AFNetworking.requestGETURLs 完成处理程序在主队列上被调用:

func viewDidLoad() {
    super.viewDidLoad()
    getUserData({
        //do somthing and update ui
    }) {
        //handle error
    }
}

编辑:

我怎么理解你的评论,你实际上想命名你的完成和错误块参数。如果是这样,请将方法更改为:

func getUserData(completion completed: @escaping onCompleted, error failed: @escaping onFailed){ ... }

并这样称呼它:

getUserData(completion: { 
    //do somthing and update ui
}, error: {
    //handle error
})