iOS- [ClplaceMark TimeZone]:未识别的选择器iOS 8



我正在使用此方法,以便从lat/long获取timeZone

-(void)getTimeZoneFromLatLong
{
    CLLocation *location = [[CLLocation alloc] initWithLatitude:self.parentVC.currentCity.latitude.doubleValue longitude:self.parentVC.currentCity.longitude.doubleValue];
    CLGeocoder *geoCoder = [[CLGeocoder alloc]init];
    [geoCoder reverseGeocodeLocation: location completionHandler:^(NSArray *placemarks, NSError *error)
    {
        CLPlacemark *placemark = [placemarks objectAtIndex:0];
        _placemark = placemark;
    }];
}

然后我可以使用timeZone来致电:

EDSunriseSet *eds = [EDSunriseSet sunrisesetWithTimezone:_placemark.timeZone
           latitude:latitude.doubleValue longitude:longitude.doubleValue];

EDSunriseSet是一个库,以从lat/longtimeZone获取Sunrise/Sunset值。

它运行得很好,但是Crashlytics警告我[CLPlacemark timeZone]iOS8不相容。

如何适应iOS8的代码?

编辑: [_placemark timezone]_placemark.timezone都接受了吗?

可从iOS 9获得。

/*
     *  timeZone
     *
     *  Discussion:
     *      Returns the time zone associated with the placemark.
     */
    @available(iOS 9.0, *)
    open var timeZone: TimeZone? { get }

对于iOS 8,尝试此

CLLocation *currentLocaiton = [[CLLocation alloc] initWithLatitude:latitude longitude:longitude];
[geoCoder reverseGeocodeLocation:currentLocaiton completionHandler:^(NSArray *placemarks, NSError *error) { 
if (error == nil && [placemarks count] > 0) {placeMark = [placemarks lastObject]; 
    NSRegularExpression regex = [NSRegularExpression regularExpressionWithPattern:@"identifier = "[a-z]*\/[a-z]_*[a-z]*"" options:NSRegularExpressionCaseInsensitive error:NULL]; 
    NSTextCheckingResult *newSearchString = [regex firstMatchInString:[placeMark description] options:0 range:NSMakeRange(0, [placeMark.description length])]; 
    NSString *substr = [placeMark.description substringWithRange:newSearchString.range]; NSLog(@"timezone %@",substr); 
}

相关内容

  • 没有找到相关文章

最新更新