Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios7 网络可达性返回假值?_Ios7_Reachability_Afnetworking 2 - Fatal编程技术网

Ios7 网络可达性返回假值?

Ios7 网络可达性返回假值?,ios7,reachability,afnetworking-2,Ios7,Reachability,Afnetworking 2,我有网络连接,可以用浏览器浏览 这是我的代码,可以用AFNetworking检查可达性 - (BOOL)connected { return [AFNetworkReachabilityManager sharedManager].reachable; } 在ViewDidLoad中 BOOL isOnline = [self connected]; if(isOnline == YES) { NSLog(@"YES"); } els

我有网络连接,可以用浏览器浏览

这是我的代码,可以用
AFNetworking
检查
可达性

- (BOOL)connected {
    return [AFNetworkReachabilityManager sharedManager].reachable;
}
在ViewDidLoad中

BOOL isOnline = [self connected];

    if(isOnline == YES)
    {
        NSLog(@"YES");
    }

    else
    {
        NSLog(@"NO");
    }
它只显示
,我不知道为什么


使用
AFNetworking
是否有检查
可达性的最简单方法?

我想
启动监控
不会被调用,请尝试执行以下操作:

- (void)viewDidLoad {
     [super viewDidLoad];
      ....
     [[AFNetworkReachabilityManager sharedManager] startMonitoring];   
}
如果没有解决你的问题, 那么您的问题可能是由于调用<代码> [AFNETWorkReababyListMealsSyrdMe]。 我也有同样的问题。我正在调用web服务,而
AFNetworkReachabilityManager
尚未完成监视过程,并返回
reachable=NO
,尽管我的internet连接正在工作

- (void) callWebService {
    NSLog(@"Calling Webservice...");

    if ([AFNetworkReachabilityManager sharedManager].reachable == NO) {
        NSLog(@"%@", kErrorNoInternet);
        return;
    }

    // Now, proceed to call webservice....
}
所以,为了解决这个问题,我做了一个诡计。延迟一段时间后调用web服务(在本例中为0.05秒)

之前:

[self callWebService];
[self performSelector:@selector(callWebService) withObject:nil afterDelay:0.3]; // you can set delay value as per your choice
输出:

[self callWebService];
[self performSelector:@selector(callWebService) withObject:nil afterDelay:0.3]; // you can set delay value as per your choice
之后:

[self callWebService];
[self performSelector:@selector(callWebService) withObject:nil afterDelay:0.3]; // you can set delay value as per your choice
输出:

[self callWebService];
[self performSelector:@selector(callWebService) withObject:nil afterDelay:0.3]; // you can set delay value as per your choice

从输出中可以看出,时间差几乎不小于0.05秒(精确值为0.048秒)


希望这会有所帮助。

不用等待,您可以使用块来确保只有在网络可用时才会调用web服务

[[AFNetworkReachabilityManager sharedManager]startMonitoring];

[[AFNetworkReachabilityManager sharedManager]setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status)
{
    if (status == AFNetworkReachabilityStatusReachableViaWWAN || status == AFNetworkReachabilityStatusReachableViaWiFi) 
{

        // connected. you can call your web service here

    }else
{
        // internet disconnected
    }
}];

无论如何,它应该在那里,兄弟,但奇怪的是它工作正常,尝试注册更改,检查这个。当我用这些代码测试时,它甚至没有显示NSLog兄弟。[[AFNetworkReachabilityManager sharedManager]setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus状态){NSLog(@“Reachability:%@”,AFStringFromNetworkReachabilityStatus(状态));}];我还添加了#import“AFNetworking.h”#import“AFNetworkReachabilityManager.h”。我需要什么?@Yahiko在真实设备上进行测试?尝试关闭无线,切换到蜂窝数据,然后返回无线等。您还可以检查networkReachabilityStatus==afnetworkreachabilitystatus未知。若状态未知,那个么您可以假设网络可以访问并发出请求