How to get formatted address NSString from AddressDictionary?

前端 未结 9 1398
旧巷少年郎
旧巷少年郎 2020-12-17 14:58

Trying to get formatted address from AddressDictionary, that I got from CLGeocoder. Used following code with no result:

subtitle = [NSString stringWithString         


        
9条回答
  •  离开以前
    2020-12-17 15:44

    As highlighted by Martyn Davis, ABCreateStringWithAddressDictionary is deprecated in iOS 9.

    You can use the functions below to convert the addressDictionary to the newer CNMutablePostalAddress, then use the CNPostalAddressFormatter to generate a localised string as long as you import the Contacts framework.

    Swift 3.x

    // Convert to the newer CNPostalAddress
    func postalAddressFromAddressDictionary(_ addressdictionary: Dictionary) -> CNMutablePostalAddress {
       let address = CNMutablePostalAddress()
    
       address.street = addressdictionary["Street" as NSObject] as? String ?? ""
       address.state = addressdictionary["State" as NSObject] as? String ?? ""
       address.city = addressdictionary["City" as NSObject] as? String ?? ""
       address.country = addressdictionary["Country" as NSObject] as? String ?? ""
       address.postalCode = addressdictionary["ZIP" as NSObject] as? String ?? ""
    
       return address
    }
    
    // Create a localized address string from an Address Dictionary
    func localizedStringForAddressDictionary(addressDictionary: Dictionary) -> String {
        return CNPostalAddressFormatter.string(from: postalAddressFromAddressDictionary(addressDictionary), style: .mailingAddress)
    }
    

    Swift 2.x

    import Contacts
    
    // Convert to the newer CNPostalAddress
    func postalAddressFromAddressDictionary(addressdictionary: Dictionary) -> CNMutablePostalAddress {
    
        let address = CNMutablePostalAddress()
    
        address.street = addressdictionary["Street"] as? String ?? ""
        address.state = addressdictionary["State"] as? String ?? ""
        address.city = addressdictionary["City"] as? String ?? ""
        address.country = addressdictionary["Country"] as? String ?? ""
        address.postalCode = addressdictionary["ZIP"] as? String ?? ""
    
        return address
    }
    
    // Create a localized address string from an Address Dictionary
    func localizedStringForAddressDictionary(addressDictionary: Dictionary) -> String {
    
        return CNPostalAddressFormatter.stringFromPostalAddress(postalAddressFromAddressDictionary(addressDictionary), style: .MailingAddress)
    }
    

提交回复
热议问题