Есть ли чистый способ преобразовать CNPostalAddress в CNMutablePostalAddress?
Я хочу изменить значения 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 ответ
Решение
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"