gpt4 book ai didi

ios - 二元运算符 '&' 不能应用于类型 'SCNetworkReachabilityFlags' 和 'Int' 的操作数

转载 作者:行者123 更新时间:2023-11-28 09:57:42 25 4
gpt4 key购买 nike

尝试在我的应用程序中检查互联网连接时出现此错误。

我使用 Xcode 7.1.1 Swift 2.0

代码块如下

public class Reach {

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, 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 = []
if SCNetworkReachabilityGetFlags( defaultRouteReachability!, &flags) == false {
return false
}

//The following two lines shows the error
let isReachable = (flags & (kSCNetworkFlagsReachable)) != 0
let needsConnection = (flags & (kSCNetworkFlagsConnectionRequired)) != 0

return isReachable && !needsConnection
}

}

我尝试将标志转换为 Int,将 NetworkFlag 转换为 UInt32,反之亦然,但它仍然显示警告并在执行时出错。我尝试了以下

(flags  & UInt32(kSCNetworkFlagsReachable))
(Int(flags) & (kSCNetworkFlagsReachable))
(flags & (kSCNetworkFlagsReachable) as! UInt32)
(flags as! Int & (kSCNetworkFlagsReachable))

但没有任何效果。谁能解决

SCNetworkReachabilityFlags 的内容

public struct SCNetworkReachabilityFlags : OptionSetType {
public init(rawValue: UInt32)

public static var TransientConnection: SCNetworkReachabilityFlags { get }
public static var Reachable: SCNetworkReachabilityFlags { get }
public static var ConnectionRequired: SCNetworkReachabilityFlags { get }
public static var ConnectionOnTraffic: SCNetworkReachabilityFlags { get }
public static var InterventionRequired: SCNetworkReachabilityFlags { get }
public static var ConnectionOnDemand: SCNetworkReachabilityFlags { get } // __OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_3_0)
public static var IsLocalAddress: SCNetworkReachabilityFlags { get }
public static var IsDirect: SCNetworkReachabilityFlags { get }

public static var IsWWAN: SCNetworkReachabilityFlags { get }
// TARGET_OS_IPHONE

public static var ConnectionAutomatic: SCNetworkReachabilityFlags { get }

最佳答案

试试吧

let isReachable = flags.contains(SCNetworkReachabilityFlags.Reachable)
let needsConnection = flags.contains(SCNetworkReachabilityFlags.ConnectionRequired)

OptionSetType有一个方便的方法来包含,所以希望它会检查标志是否已设置

关于ios - 二元运算符 '&' 不能应用于类型 'SCNetworkReachabilityFlags' 和 'Int' 的操作数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34260333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com