iOS学习之判断是否有网络的方法

时间:2023-05-15 20:48:08

在实际开发中, 会有这样一个需求: 用户在有网的状态下会直接从网络请求数据, 在没网的情况下直接从本地读取数据.

下边的方法可以判断是否有网络.

- (BOOL)connectedToNetwork
{
// Create zero addy
struct sockaddr_in zeroAddress;
bzero(&zeroAddress, sizeof(zeroAddress));
zeroAddress.sin_len = sizeof(zeroAddress);
zeroAddress.sin_family = AF_INET; // Recover reachability flags
SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress);
SCNetworkReachabilityFlags flags; BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags);
CFRelease(defaultRouteReachability); if (!didRetrieveFlags)
{
printf("Error. Could not recover network reachability flags\n");
return NO;
} BOOL isReachable = ((flags & kSCNetworkFlagsReachable) != );
BOOL needsConnection = ((flags & kSCNetworkFlagsConnectionRequired) != );
return (isReachable && !needsConnection) ? YES : NO;
}

在文件中可以将该文件复制其中,  该方法有一个BOOL类型的返回值, 只需要根据返回值来执行的具体的操作即可.