实例成员“可达性”不能用于“CMNetworkManager”类型
Posted
技术标签:
【中文标题】实例成员“可达性”不能用于“CMNetworkManager”类型【英文标题】:Instance member 'reachability' cannot be used on type '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 提到的答案不适用于我的示例。 (确保您没有尝试修改类而不是实例)。我在这里修改一个实例(可达性)
【问题讨论】:
【参考方案1】:问题是您试图从类型方法访问实例属性。您要么需要将所有方法设为实例方法,要么将属性设为类型属性。
static let reachability = try! Reachability()
将解决您的问题,因为这会使该属性成为类型属性。
另外,Swift 中不需要 NSObject
继承。
【讨论】:
以上是关于实例成员“可达性”不能用于“CMNetworkManager”类型的主要内容,如果未能解决你的问题,请参考以下文章
实例成员不能用于 struct swift 之间的嵌套类型的实例
静态成员“负载”不能用于“AppDelegate”类型的实例
实例成员 'count' 不能用于类型 'TweetFilterOptions.AllCases'