【问题标题】:Instance member 'reachability' cannot be used on type 'CMNetworkManager'实例成员“可达性”不能用于“CMNetworkManager”类型
【发布时间】:2020-11-30 05:00:28
【问题描述】:
import Foundation
import Reachability

class CMNetworkManager: NSObject {

    let reachability = try! Reachability()
    
    override init() {
        super.init()
        }

    class func isReachable() -> Bool {
        // deprecated
        // return self.sharedInstance.reachability.isReachable
        return reachability.connection != .none
    }

    class func isReachableViaWifi() -> Bool {
        //deprecated
        //return self.sharedInstance.reachability.isReachableViaWiFi
        return reachability.connection == .wifi
    }

    class func isReachableViaWWAN() -> Bool {
        // deprecated
        // return self.sharedInstance.reachability.isReachableViaWWAN
        return reachability.connection == .cellular
    }
    class func testCodeFromDocumentation () {
    reachability.whenReachable = { reachability in
        if reachability.connection == .wifi {
            print("Reachable via WiFi")
        } else {
            print("Reachable via Cellular")
        }
    }
    reachability.whenUnreachable = { _ in
        print("Not reachable")
    }

    do {
        try reachability.startNotifier()
    } catch {
        print("Unable to start notifier")
    }
}
}

每当使用reachability.something 时,Xcode 中都会出现此错误:

实例成员“可达性”不能用于类型 'CMNetworkManager'


注意:

here 提到的答案不适用于我的示例。 (确保您没有尝试修改类而不是实例)。我在这里修改一个实例(可达性)

【问题讨论】:

    标签: swift


    【解决方案1】:

    问题是您试图从类型方法访问实例属性。您要么需要将所有方法设为实例方法,要么将属性设为类型属性。

    static let reachability = try! Reachability() 将解决您的问题,因为这会使该属性成为类型属性。

    另外,Swift 中不需要 NSObject 继承。

    【讨论】:

      猜你喜欢
      • 2015-11-27
      • 2016-05-23
      • 2016-01-01
      • 2016-09-09
      • 2020-01-16
      • 2017-06-25
      • 2016-07-05
      • 2017-01-25
      相关资源
      最近更新 更多