gpt4 book ai didi

ios - 检查互联网连接 queryForTable Parse

转载 作者:行者123 更新时间:2023-11-30 13:37:07 25 4
gpt4 key购买 nike

我试图在应用程序启动时检查互联网是否已连接。当我关闭 Wifi 并检查应用程序的工作情况时,该应用程序仍在尝试连接到互联网 10 秒钟。如果用户未连接到互联网,那么我应该显示一条警告,请连接到互联网。

我没有使用localDataStore。在我看来,我必须在 queryForTable 中添加互联网检查语句。

func baseQuery() -> PFQuery {
let query = PFQuery(className: "homeClass") // Replace with the class name for the Parse data you're interested in.
// Just like with a regular PFQuery you can filter and sort.
query.orderByAscending("SNo")
return query
}


override func queryForTable() -> PFQuery {
if Reachability.isConnectedToNetwork() == true {
print("Internet connection OK")
tableView.reloadData()
self.baseQuery()
} else {
print("Internet connection FAILED")
let alert = UIAlertView(title: "No Internet Connection", message: "Make sure your device is connected to the internet.", delegate: nil, cancelButtonTitle: "OK")
alert.show()
let destinationVC:MainViewController = self.storyboard?.instantiateViewControllerWithIdentifier("NewView") as! MainViewController
navigationController?.pushViewController(destinationVC , animated: true)

}

}

更新

func baseQuery() -> PFQuery {

let query = PFQuery(className: "homeClass")

if Reachability.isConnectedToNetwork() != true {
print("Internet connection FAILED")

} else {
print("Internet connection OK")
query.orderByAscending("SNo")
return query
}

return PFQuery()
}

override func queryForTable() -> PFQuery {

return self.baseQuery()
}

我正在尝试此代码,但它仍然尝试从互联网获取数据。

最佳答案

我刚刚在 SO 这个程序上找到了这个来检查接口(interface) IP 地址,您需要添加一个桥接 header 才能使其工作。

虽然也许不是“答案”;您应该能够修改此代码来检查所有网络连接的状态。

请注意,您需要通过 Objective-C 桥接 header 包含此内容。

#include <ifaddrs.h>

您应该能够从这里将其组合在一起!

func getIFAddresses() -> [String] {
var addresses = [String]()

// Get list of all interfaces on the local machine:
var ifaddr : UnsafeMutablePointer<ifaddrs> = nil
if getifaddrs(&ifaddr) == 0 {

// For each interface ...
for (var ptr = ifaddr; ptr != nil; ptr = ptr.memory.ifa_next) {
let flags = Int32(ptr.memory.ifa_flags)
var addr = ptr.memory.ifa_addr.memory

// Check for running IPv4, IPv6 interfaces. Skip the loopback interface.
if (flags & (IFF_UP|IFF_RUNNING|IFF_LOOPBACK)) == (IFF_UP|IFF_RUNNING) {
if addr.sa_family == UInt8(AF_INET) || addr.sa_family == UInt8(AF_INET6) {

// Convert interface address to a human readable string:
var hostname = [CChar](count: Int(NI_MAXHOST), repeatedValue: 0)
if (getnameinfo(&addr, socklen_t(addr.sa_len), &hostname, socklen_t(hostname.count),
nil, socklen_t(0), NI_NUMERICHOST) == 0) {
if let address = String.fromCString(hostname) {
addresses.append(address)
}
}
}
}
}
freeifaddrs(ifaddr)
}

return addresses
}

关于ios - 检查互联网连接 queryForTable Parse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35954417/

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