如果网络关闭并且输出控制台返回错误,则不会加载 MapView



我需要你的支持。我的应用程序使用MKMapView来显示地图。我在模拟器和iPhone上测试了它,但当网络打开时,它工作得很好,当网络关闭时,它不会加载,输出控制台返回这些错误:

 Could not determine current country code: Error Domain=NSURLErrorDomain Code=-1009 "The Internet connection appears to be offline." UserInfo=0x7f800e0e7520 {NSUnderlyingError=0x7f800e0207c0 "The Internet connection appears to be offline.", NSErrorFailingURLStringKey=http://gsp1.apple.com/pep/gcc, NSErrorFailingURLKey=http://gsp1.apple.com/pep/gcc, _kCFStreamErrorDomainKey=12, _kCFStreamErrorCodeKey=8, NSLocalizedDescription=The Internet connection appears to be offline.}

这些错误正常吗?还是必须处理?我不知道如何修复这些错误,也不知道在哪个地图视图的功能中检查网络连接。

谢谢并为我糟糕的英语感到抱歉

您应该首先检查是否已连接到网络-如果未连接,则不能使用映射)。

试试这样的东西:

func hasConnection() -> Bool {
    var zeroAddress = sockaddr_in(sin_len: 0, sin_family: 0, sin_port: 0, sin_addr: in_addr(s_addr: 0), sin_zero: (0, 0, 0, 0, 0, 0, 0, 0))
    zeroAddress.sin_len = UInt8(sizeofValue(zeroAddress))
    zeroAddress.sin_family = sa_family_t(AF_INET)
    let defaultRouteReachability = withUnsafePointer(&zeroAddress) {
        SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($0)).takeRetainedValue()
    }
    var flags: SCNetworkReachabilityFlags = 0
    if SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags) == 0 {
        return false
    }
    let isReachable = (flags & UInt32(kSCNetworkFlagsReachable)) != 0
    let needsConnection = (flags & UInt32(kSCNetworkFlagsConnectionRequired)) != 0
    return (isReachable && !needsConnection) ? true : false
}

如果为false,则应禁用该地图。

最新更新