代码之家  ›  专栏  ›  技术社区  ›  Naresh

addressDictionary已弃用:首次在iOS 11.0中弃用-使用@属性

  •  14
  • Naresh  · 技术社区  · 7 年前

    我正在与合作以获取位置和地址。因为我正在成功地获取位置,但在获取地址时,我收到了如下警告:,

    “addressDictionary”已弃用:第一个在iOS 11.0中弃用-使用@属性

    是否有任何解决方案。。。

    enter image description here

    2 回复  |  直到 3 年前
        1
  •  22
  •   Naresh    5 年前

    在Swift 5中

    //let location: CLLocation = CLLocation(latitude: 16.511131, longitude: 80.658725)//Convert lat & lng in to CLLocation
    
        let geocoder = CLGeocoder()
        geocoder.reverseGeocodeLocation(location) { (placemarksArray, error) in
            print(placemarksArray!)
            if (error) == nil {
                if placemarksArray!.count > 0 {
                    let placemark = placemarksArray?[0]
                    let address = "\(placemark?.subThoroughfare ?? ""), \(placemark?.thoroughfare ?? ""), \(placemark?.locality ?? ""), \(placemark?.subLocality ?? ""), \(placemark?.administrativeArea ?? ""), \(placemark?.postalCode ?? ""), \(placemark?.country ?? "")"
                    print("\(address)")
                }
            }
    
        }
    

    结果如下:

    **print(placemarksArray!) :** [20/19, Road Number 19, 20/19, Road Number 19, Wadala West, Mumbai, 400031, Maharashtra, India @ <+19.01761470,+72.85616440> +/- 100.00m, region CLCircularRegion (identifier:'<+19.01732600,+72.85634600> radius 70.52', center:<+19.01732600,+72.85634600>, radius:70.52m)]
    
    **print("\(address)") :** 20/19, Road Number 19, Mumbai, Wadala West, Maharashtra, 400031, India
    

    在目标C中

    if (!(error))
        {
            CLPlacemark *placemark = [placemarks objectAtIndex:0];    
            NSString *address = [NSString stringWithFormat:@"%@, %@, %@, %@, %@, %@",
                                 placemark.thoroughfare,
                                 placemark.locality,
                                 placemark.subLocality, 
                                 placemark.administrativeArea, 
                                 placemark.postalCode,
                                 placemark.country];
            NSLog(@"%@", address);
    
        }
    
        2
  •  13
  •   Rudolf Adamkovič    6 年前

    用swift回答-旧方式注释掉:

    let street = placemark.thoroughfare! // addressDictionary!["Street"] as? String ?? " "
        let city =  placemark.subAdministrativeArea! // addressDictionary!["City"] as? String ?? " "
        let state = placemark.administrativeArea!//addressDictionary!["State"] as? String ?? " "
        let zip =  placemark.isoCountryCode!// addressDictionary!["ZIP"] as? String ?? " "
        let country = placemark.country! // addressDictionary!["Country"] as? String ?? " "