ReachabilitySwift pod 在 Swift 2.3 中导致错误

ReachabilitySwift pod causes an error in Swift 2.3

我在项目中使用 ReachabilitySwift cocoapods

Pod 文件:

pod 'ReachabilitySwift', '~> 2.4'

我安装了这个 pod 并导入了 ReachabilitySwift 文件。

现在,在创建实例时let reachability = Reachability()! 导致错误 无法调用不带参数的类型 'Reachability' 的初始值设定项。

我试过这个 但没用。

任何修复?

错误信息很清楚:

您必须使用带参数的初始化程序之一。

键入 let reachability = Reach 并找出 Xcode 在代码完成中的建议
(或阅读文档)。

问题是你使用 swift 2.3,对于这个版本你需要使用 ReachabilitySwift 和版本 2.4。但是在这个版本中 Reachability class 没有不带参数的构造函数。要解决此问题,您需要为此 class 创建扩展并添加不带参数的构造函数。

extansion Reachability{
   public convenience init() {

        var zeroAddress = sockaddr()
        zeroAddress.sa_len = UInt8(MemoryLayout<sockaddr>.size)
        zeroAddress.sa_family = sa_family_t(AF_INET)

        guard let ref: SCNetworkReachability = withUnsafePointer(to: &zeroAddress, {
            SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer([=10=]))
        }) else { return nil }

        self.init(reachabilityRef: ref)
    }
}

我没有测试这段代码。它的代码可能包含一些错误。

已修复!

为 Swift 2.3

创建的可达性实例如下
let reachability = try! Reachability.init(hostname: "www.google.com")