我是iOS编程的新手,没有面向对象的编程背景.
我有一个应用程序,它本质上是几个Web API的用户界面.
我有一个Reachability类,可以让我检查是否有有效的互联网连接.当用户在登录页面上并且没有其他操作时,这很有效.
但是,假设我有一个带有5个按钮的视图,所有这些都需要互联网连接才能工作.在实际进行API调用之前,我是否只需要每个按钮调用此Reachability.isConnected() - > Bool方法?
我担心这不是正确的逻辑.我是否应该有后台程序来定期检查连接?
由于缺乏OOP经验,我将这个功能分解为离散类,因此我遇到了问题.
有关处理此连接检查的最佳方法的任何建议都会很棒.
要检查连接网络,您必须创建一个类,例如将其放在"服务"文件夹中,然后复制以下代码:
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, 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(kCFAllocatorDefault, UnsafePointer($0))
}
var flags: SCNetworkReachabilityFlags = SCNetworkReachabilityFlags(rawValue: 0)
if SCNetworkReachabilityGetFlags(defaultRouteReachability!, &flags) == false {
return false
}
let isReachable = flags == .Reachable
let needsConnection = flags == .ConnectionRequired
return isReachable && !needsConnection
}
}
Run Code Online (Sandbox Code Playgroud)
然后,在任何您想要的地方使用它:
if Reachability.isConnectedToNetwork() {
// Do stuff if you're connected to the internet
}
else {
// Do stuff if you're not connected to the internet
}
Run Code Online (Sandbox Code Playgroud)
希望它可以帮助你;)
| 归档时间: |
|
| 查看次数: |
1653 次 |
| 最近记录: |