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

标签 ios swift swift3 grand-central-dispatch completionhandler

我正在尝试从服务器获取用户数据。在加载数据之前,应用程序不必显示任何 View 。 我阅读了有关 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 时我如何在我的 View Controller 上使用它呢?

最佳答案

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

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

编辑:

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

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

并这样调用它:

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

关于ios - 从服务器获取数据时如何使用typealias,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41614809/

相关文章:

ios:从应用程序委托(delegate)访问导航 Controller

ios - 在自定义类中呈现 UIDocumentInteractionController 的问题

swift - Swift 3中如何处理FBSDKGraphRequest的响应数据

ios - UITextField 未显示在 View 中

html - 如何在 Swift 3 中加载带有 HTML 的 CSS 文件?

ios - 如何在不使用浏览器的情况下使用 Sails.JS 打开 Web 套接字?

ios - APNS 证书的 "Revoke"和 "Download"按钮被禁用

ios - 在后台模式下接收 GPS 位置更新?iOS 8

ios - 请求的数据在 ios 的 soap web 服务中变得空

ios - 在 Swift 中枚举 View 的 NSLayoutConstraints?