2016-09-28 2 views
0

날씨 데이터를 표시하기 위해 사용자의 위치에 액세스하려고합니다. 나는이 부호를 사용하고있다 :허가 후 위치 데이터를 가져올 수 없습니다.

if(self.locationManager == nil) { 
    self.locationManager = [[CLLocationManager alloc] init]; 
    self.locationManager.delegate = self; 
} 

// Check for iOS 8. Without this guard the code will crash with "unknown selector" on iOS 7. 
if ([self.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) { 
    NSLog (@"ENTERING requestWhenInUseAuthorization",nil); 
    [self.locationManager requestAlwaysAuthorization]; 
} 
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
[self.locationManager startUpdatingLocation]; 

CLLocation *location = [self.locationManager location]; 
[self.locationManager stopUpdatingLocation]; 
NSString *latitude = [[NSNumber numberWithDouble:location.coordinate.latitude] stringValue]; 
NSString *longitude = [[NSNumber numberWithDouble:location.coordinate.longitude] stringValue]; 

나는 현재 위치를 사용하기 위하여 허가를 요구하는 팝업을 얻는다. 동의하지만 위치를 찾지 못했습니다. 그 값은 nil입니다. 설정으로 이동하면 데이터에 액세스 할 수있는 권한이 있지만 애플리케이션을 닫고 다시 열지 않으면 데이터를 가져올 수 없다는 메시지가 표시됩니다. 현재 위치를 얻는 방법이 있습니까? 내가 뭐 잘못하고 있니?

+0

'CLLocationManagerDelegate'를 정의하고 (locationManager : didUpdateLocations :'메소드에서) 위치가 업데이트 될 때까지 기다려야합니다. 이 방법은 여러 번 호출되며, 정확도가 더 높아집니다. ** 여기서 ** CLLocation 인스턴스를 얻고 싶습니다. –

답변

1

너무 빨리 액세스하려고합니다. 대리자 메서드를 구현해야합니다. 위치를 사용할 수있을 때 호출됩니다.

한 위치 만 있으면 위임 방법에서 stopUpdatingLocation으로 전화 할 수 있습니다.

+0

! 캘린더에 대한 액세스 권한을 요청한 후 캘린더에도 비슷한 항목이 있는지 물어볼 수 있습니다. 캘린더 일정을 표시하고 싶지만보기를 종료하고 다시보기로 표시하지 않으면 표시되지 않습니다. – Lara

+0

그건 완전히 다른 질문입니다. 나는 모든 관련 코드와 그 문제에 관한 세부 사항을 담은 새로운 질문을 게시 할 것을 제안한다. – rmaddy

+0

나는 이미 사과했고, 당신의 도움에 너무 감사드립니다. http://stackoverflow.com/questions/39772054/how-to-know-when-calendar-finishes-loading – Lara

관련 문제