0
를로드 할 때이 있습니다아이폰 OS 내 애플 대리자에서 외부 데이터
Reachability* reach = [Reachability reachabilityWithHostname:@"www.google.com"];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(reachabilityChanged:)
name:kReachabilityChangedNotification
object:nil];
[reach startNotifier];
HomeViewController_iPhone *homeViewController = [[HomeViewController_iPhone alloc] initWithNibName:@"HomeViewController_iPhone" bundle:nil];
homeViewController.managedObjectContext = self.managedObjectContext;
UINavigationController *homeNavController = [[UINavigationController alloc] initWithRootViewController: homeViewController];
homeNavController.navigationBar.barStyle = UIBarStyleBlackTranslucent;
self.tabBarController.viewControllers = [NSArray arrayWithObjects:homeNavController, nil];
...
-(void)reachabilityChanged:(NSNotification*)note
{
Reachability * reach = [note object];
if([reach isReachable])
{
NSLog(@"Notification Says Reachable");
self.isConnected = YES;
}
else
{
NSLog(@"Notification Says UN-Reachable");
self.isConnected = NO;
}
}
문제는 내 HomeViewController (있는 viewDidLoad)에서 나는이 할 것을 :
AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
if (appDelegate.isConnected)
{
dispatch_async(kBgQueue, ^{
NSData* data = [NSData dataWithContentsOfURL: kFeedURL];
[self performSelectorOnMainThread:@selector(fetchedData:)
withObject:data waitUntilDone:YES];
});
}
그러나 appDelegate.isConnected을 내가 연결되어 있어도 항상 NO입니다. Reachability 클래스가 연결이 설정되기 전에 검사가 수행되고 있다고 생각합니다. 그러나 어디에서 데이터를 가져 오기위한 호출을해야합니까? viewDidLoad 및 viewWillAppear 시도했지만 isConnected 여전히 해당 지점에서 모두 NO입니다.
(appDelegate.isConnected) 문 있다면이를 사용하지 않는 경우는 작품을 가져,하지만 사용자가 연결 dispatch_async 호출이 응용 프로그램을 충돌합니다이없는 경우 때문에 나는 그 확인을 할 필요가 . – soleil
아마도이 답변은 도움이 될 것입니다 -> http://stackoverflow.com/questions/5195012/how-to-use-reachability-class-to-detect-valid-internet-connection?rq=1 – dnstevenson