参见英文答案 >
Check for internet connection with Swift10个
有没有一个苹果框架包来检测是否有一个互联网连接?目前,当我的应用程序尝试在没有互联网连接的情况下对用户的位置进行地理位置分配
有没有一个苹果框架包来检测是否有一个互联网连接?目前,当我的应用程序尝试在没有互联网连接的情况下对用户的位置进行地理位置分配
/*inside locationManager didUpdateLocations method*/ var currentLocation:CLLocation? = locations[0] as? CLLocation geocoder = CLGeocoder() //Crashes on line below when there isn't an internet connection //Need to add function to check if internet connection is live //Before running reverseGeocodeLocation geocoder.reverseGeocodeLocation (currentLocation,handleGeocode)
我有点新的快速和ios编程 – 我的道歉.
解决方法
不是一个完整的网络检查库,但我发现了
this简单的方法来检查网络可用性.我设法把它翻译成Swift,并在这里是最终的代码.
import Foundation import SystemConfiguration public class Reachability { class func isConnectedToNetwork() -> 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)) 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 } }
它适用于3G和WiFi连接.我也将其上传到我的Github一个工作的例子.如果您正在寻找一种简单的方法来检查纯粹在Swift中的网络可用性,您可以使用它.