Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从服务器获取数据时如何使用typealias_Ios_Swift_Swift3_Grand Central Dispatch_Completionhandler - Fatal编程技术网

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

Ios 从服务器获取数据时如何使用typealias,ios,swift,swift3,grand-central-dispatch,completionhandler,Ios,Swift,Swift3,Grand Central Dispatch,Completionhandler,我正在尝试从服务器获取用户数据。在加载数据之前,应用程序不必显示任何视图。 我读过关于typealias的文章,不知道如何使用它 我想要的是:加载数据后,继续下一步。如果失败,请再次加载数据 下面是我如何声明typealias的 typealias onCompleted = () -> () typealias onFailed = () -> () 这是我的申请代码 func getUserData(_ completed: @escaping onCompleted, fa

我正在尝试从服务器获取用户数据。在加载数据之前,应用程序不必显示任何视图。 我读过关于typealias的文章,不知道如何使用它

我想要的是:加载数据后,继续下一步。如果失败,请再次加载数据

下面是我如何声明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
})

为什么您要使用AFN与Swift联网?有一个来自同一个开发人员的框架,做同样的事情,只用Swift编写。如果这是真正的代码结构,我将返回JSONResponse,而不是两个单独的对象,并在调用方法中进行切换。如果这只是一个正确/错误的问题,我会返回一个Bool->不要专注于AFNetworking,AF是我的项目首字母我使用Alamofire和SwiftyJSONAs作为旁注,我建议将您的类型别名大写为OnCompleted和OnFailure,或者更好的是,CompletedBlock和FailureBlock。TypeAlias表示类型,顾名思义,类型使用大写的名称。什么不起作用?调用这个很好,但是调用错误完成块时如何调用getUserDate