2014-02-23 27 views
1

我有一個Boolean值,用以下代碼檢查Reachability錯誤的可達性狀態 - iOS中未設置布爾值

@property (nonatomic,assign) BOOL isOnline; 



[[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(reachabilityChanged:) 
               name:kReachabilityChangedNotification 
               object:nil]; 

    Reachability * reach = [Reachability reachabilityWithHostname:@"www.google.com"]; 

    reach.reachableBlock = ^(Reachability * reachability) 
    { 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      NSLog(@"Reachable"); 
      self.isOnline = YES; 
     }); 
    }; 

    reach.unreachableBlock = ^(Reachability * reachability) 
    { 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      self.isOnline = NO; 
      NSLog(@"Unable"); 
     }); 
    }; 

    [reach startNotifier]; 

但是當我檢查它

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

else{ 
NSLog(@"NO"); 
} 

這只是顯示NO。我相信Reachability可以到達互聯網,我有連接。但Boolean值未設置爲YES

我該怎麼辦?

回答

2

看來你正在使用Tony Million的Reachability,所以我建議的第一件事就是使用isReachable函數。

其次,沒有與此可達性在iOS7一個問題,所以要解決這一點,你必須做到以下幾點

在功能-(BOOL)isReachableWithFlags:(SCNetworkReachabilityFlags)flagsReachability.m已提交一行

#if TARGET_OS_IPHONE 
    if(flags & kSCNetworkReachabilityFlagsIsWWAN) 
    { 
     // We're on 3G. 
     if(!self.reachableOnWWAN) 
      { 
      // We don't want to connect when on 3G. 
      // Comment this line 
      //connectionUP = NO; 

     } 
    } 
#endif 
+0

感謝你兄弟。以上代碼你的意思是,我需要設置評論connectionUp = NO ;? –

+1

是的評論,行和歡迎:) –