我想修改CNPostalAddress的值,它是从CLPlacemark的postalAddress属性中获得的。
由于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
}
}有更好的方法来完成这个转换吗?
发布于 2018-10-20 00:02:55
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"https://stackoverflow.com/questions/52900814
复制相似问题