如何在mac OS上使用CNContactViewController编辑联系人

时间:2017-01-30 20:57:33

标签: swift xcode macos cncontactviewcontroller

我想创建一个允许用户编辑联系人的应用。

根据the docsCNContactViewController包含iOS和allowsEditing的属性macOS 10.11+

在Xcode中,CNContactViewController只有一个属性,没有特定于联系人的方法:

@NSCopying open var contact: CNContact?

是否可以使用ContactsUI框架编辑Mac上的联系人,或者这是文档中的错误?

这是我显示联系人的方式:

if let vc = segue.destinationController as? CNContactViewController{

    let contact = CNMutableContact()
    contact.givenName = "John"
    contact.familyName = "Appleseed"

    let homeEmail = CNLabeledValue(label:CNLabelHome, value:"john@example.com" as NSString)
    let workEmail = CNLabeledValue(label:CNLabelWork, value:"j.appleseed@icloud.com" as NSString)
    contact.emailAddresses = [homeEmail, workEmail]

    contact.phoneNumbers = [CNLabeledValue(
        label:CNLabelPhoneNumberiPhone,
        value:CNPhoneNumber(stringValue:"(408) 555-0126"))]

    let homeAddress = CNMutablePostalAddress()
    homeAddress.street = "1 Infinite Loop"
    homeAddress.city = "Cupertino"
    homeAddress.state = "CA"
    homeAddress.postalCode = "95014"
    contact.postalAddresses = [CNLabeledValue(label:CNLabelHome, value:homeAddress)]

    var birthday = DateComponents()
    birthday.day = 1
    birthday.month = 4
    birthday.year = 1988  // You can omit the year value for a yearless birthday
    contact.birthday = birthday
    vc.contact = contact
}

但是,没有可用的编辑按钮:

no-edit-button

1 个答案:

答案 0 :(得分:1)

我使用了我的一个开发人员信用卡在Sierra下询问Apple这个问题,答复是“编辑”功能尚未在macOS下实现。有人建议我提交雷达(我做过)。我希望它可以为High Sierra更新,但是唉,还没有这样的API。

如果您点击实际的'allowEditing'链接,您会看到对于此API,它仅在iOS下(目前为止)。可惜 - 我真的很期待删除我的联系人代码的AddressBook代码,但我还不能。