刚刚开始使用ios11,将我的代码从ios10.3移至ios11中带来了以下挑战,而以下代码在ios11之前使用以下代码:
: CLGeocoder *GeoCoder = [[CLGeocoder alloc] init];
[GeoCoder reverseGeocodeLocation:_LocationManager.location completionHandler:^(NSArray *PlaceMarks, NSError *Error)
{
if (!Error)
{
MKPlacemark *PlaceMark_MK;
if (PlaceMarks.count > 0)
{
MKPlacemark *PlaceMark = [PlaceMarks objectAtIndex:0];
if (PlaceMark.location.coordinate.latitude != 0.0F && PlaceMark.location.coordinate.longitude != 0.0F)
{
PlaceMark_MK = [[MKPlacemark alloc] initWithCoordinate:PlaceMark.location.coordinate addressDictionary:PlaceMark.addressDictionary];
....
现在,使用ios11,它在抱怨placemark.addressdictionary,而everseptictionary被弃用。
adverseDictionary'已弃用:iOS 11.0中首先弃用 - 使用@properties
我试图这样做,但是不幸的是,InitWithCoorceartion函数无论如何都需要地址dictionary。
我想知道是否有人遇到了同样的问题,我知道这是非常新的(昨天刚刚问世)。
我想我还是发现了答案:
我替换了以下行:
PlaceMark_MK = [[MKPlacemark alloc] initWithCoordinate:PlaceMark.location.coordinate addressDictionary:PlaceMark.addressDictionary];
使用以下行:
PlaceMark_MK = [[MKPlacemark alloc] initWithCoordinate:PlaceMark.location.coordinate postalAddress:PlaceMark.postalAddress];
这似乎可以解决这个问题。
您需要通过
的属性访问 var placemark = placemarks[0] as? CLPlacemark
var address = "(placemark?.thoroughfare ?? ""), (placemark?.locality ?? ""), (placemark?.subLocality ?? ""), (placemark?.administrativeArea ?? ""), (placemark?.postalCode ?? ""), (placemark?.country ?? "")"
print("(address)")