Есть ли чистый способ преобразовать CNPostalAddress в CNMutablePostalAddress? - PullRequest
0 голосов
/ 20 октября 2018

Я хочу изменить значения CNPostalAddress, которые я получил из свойства postalAddress CLPlacemark.

Поскольку CNPostalAddress имеет неизменные свойства, я хочу преобразовать его вCNMutablePostalAddress.Однако, кажется, нет чистого способа сделать это.Мой текущий метод таков:

extension CNPostalAddress {
    var mutableAddress: CNMutablePostalAddress {
        let address = CNMutablePostalAddress()

        address.city = city
        address.country = country
        address.postalCode = postalCode
        address.state = state
        address.street = street

        [...]

        return address
    }
}

Есть ли лучший способ сделать это преобразование?

1 Ответ

0 голосов
/ 20 октября 2018

CNPostalAddress - это класс, расширяющий NSObject.Это означает, что у вас есть доступ к mutableCopy.

let contact = ... // some CNPostalAddress instance obtained elsewhere
let newContact = contact.mutableCopy() as! CNMutablePostalAddress
newContact.city = "Here"

Нет необходимости копировать отдельные свойства.

Или как обновление вашего расширения:

extension CNPostalAddress {
    var mutableAddress: CNMutablePostalAddress {
        return mutableCopy() as! CNMutablePostalAddress
    }
}

let contact = ... // some CNPostalAddress instance obtained elsewhere
let newContact = contact.mutableAddress
newContact.city = "Here"
...