有没有一种干净的方法来将CNPostalAddress转换为CNMutablePostalAddress?

时间:2018-10-19 22:49:20

标签: ios swift ios-contacts cnpostaladdress

我想修改从CNPostalAddress的{​​{1}}属性获得的postalAddress的值。

由于CLPlacemark具有不可变的属性,因此我想将其转换为CNPostalAddress。但是,似乎没有一种干净的方法可以做到这一点。我当前的方法是这样:

CNMutablePostalAddress

是否有更好的方法来进行这种转换?

1 个答案:

答案 0 :(得分:4)

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"