首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在尝试在Alamofire中解析结果之前处理无Internet连接错误

在尝试在Alamofire中解析结果之前处理无Internet连接错误
EN

Stack Overflow用户
提问于 2015-09-15 15:42:52
回答 3查看 27.2K关注 0票数 17

如果在Alamofire中没有互联网连接时出现错误,我应该如何处理。我尝试检查数据是否为空,但不起作用。

下面是我如何使用Alamofire

代码语言:javascript
复制
Alamofire.request(.POST, REGISTER_URL, parameters: parameters, encoding: .JSON, headers: getAuthenticationHeader()).response { (request, response, data, errorType) -> Void in

    let resultObject: APIResults = APIResults(JSONDecoder(data!));
    let responseCode: Int = Int(resultObject.code!)!;// THIS CRASHES WHEN THERE IS NO INTERNET CONNECTION

    if (responseCode == 200) {
        available = true;
    }

    finished = true;

}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-09-15 16:51:11

我同意@Shripada的说法。首先,您应该使用可达性来检查连接性。这里有一个Swift库:https://github.com/ashleymills/Reachability.swift

此外,您还可以使用Alamofire验证方法之一:

代码语言:javascript
复制
Alamofire.request(.POST, REGISTER_URL, parameters: parameters, encoding: .JSON, headers: getAuthenticationHeader()).validate(statusCode: 200 ..< 300).response { (request, response, data, error) -> Void in
    if error != nil {
        println("Server responded with: \(response.statusCode)")
        return
    }

    // Handle your response data here
}
票数 5
EN

Stack Overflow用户

发布于 2015-09-15 18:35:01

检查internet连接是否存在的其他方法

代码语言:javascript
复制
import SystemConfiguration

func connectedToNetwork() -> Bool {

        var zeroAddress = sockaddr_in()    

       zeroAddress.sin_len = UInt8(sizeofValue(zeroAddress))

        zeroAddress.sin_family = sa_family_t(AF_INET)

      guard let defaultRouteReachability = withUnsafePointer(&zeroAddress, {
            SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($0))
        }) else {
            return false
        }
        var flags : SCNetworkReachabilityFlags = []

        if SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags) == false {

            return false

        }

        let isReachable = flags.contains(.Reachable)

        let needsConnection = flags.contains(.ConnectionRequired)

        return (isReachable && !needsConnection)

    }

let hasInternet = connectedToNetwork()
票数 5
EN

Stack Overflow用户

发布于 2019-11-19 18:20:29

它可以在swift 5中工作

代码语言:javascript
复制
.catchError { (error: Error) in
    if let err = error as? URLError, err.code  == URLError.Code.notConnectedToInternet {
        // No internet
    } else {
        // Other errors
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32580412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档