【发布时间】:2017-01-12 13:45:44
【问题描述】:
我正在尝试从服务器获取用户数据。在加载数据之前,应用程序不必显示任何视图。 我读过关于 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与Swift一起使用?有Alamofire,来自同一个开发者的框架,做同样的事情,只写在Swift。 -
如果这是真正的代码结构,我将返回
JSONResponse而不是两个单独的对象,并在调用方法中执行switch。如果它只是一个true/false问题,我会返回一个(Bool) -> () -
不要专注于 AFNetworking,AF 是我的项目缩写我正在使用 Alamofire 和 SwiftyJSON
-
附带说明,我建议将您的类型别名大写为
OnCompleted和OnFailure(或者,可能更好的是CompletedBlock和FailureBlock)。顾名思义,Typealiases 表示类型,而类型使用大写的名称。 -
什么没有按预期工作?
标签: ios swift swift3 grand-central-dispatch completionhandler