CNContactViewController()的"创建新联系人"和"添加到现有联系人"

581*_*813 7 contacts ios swift cncontact

使用ABAddressBook,当我希望用户能够为他们以前从未见过的联系人选择"创建新联系人"和"添加到现有联系人"时,我会创建并呈现一个ABUnknownPersonViewController.

我无法在CNContacts框架中找到复制此功能的方法.在我看来,它CNContactViewController(forUnknownContact: contact)可以工作,但不幸的是,这只让用户"发送消息"或"共享联系人".

如何允许用户将联系人保存到CNContacts中作为新联系人或作为现有联系人的一部分的地址簿?

func presentContact() {

    let status = CNContactStore.authorizationStatusForEntityType(.Contacts)

    switch status {
    case .Authorized: ()
    case .NotDetermined: requestAccess()
    case .Denied, .Restricted: accessDenied()
    }

    print("authorized? \(status == .Authorized)") //prints "authorized? true"

    let unknown = CNContactViewController(forUnknownContact: contact!)

    unknown.delegate = self

    self.navigationController?.pushViewController(unknown, animated: false)

}
Run Code Online (Sandbox Code Playgroud)

即使我尝试请求访问,用户仍然无法保存联系人.

mat*_*att 15

你一直没有显示真正的代码,所以这是不可能帮助你.所以我失去了兴趣.我只会告诉你我的真实代码然后让你去研究它并思考我正在做什么和你在做什么之间的区别.这是实际的工作代码; 你们去做同样的事:

let con = CNMutableContact()
con.givenName = "Johnny"
con.familyName = "Appleseed"
con.phoneNumbers.append(CNLabeledValue(
    label: "woods", value: CNPhoneNumber(stringValue: "555-123-4567")))
let unkvc = CNContactViewController(forUnknownContact: con)
unkvc.message = "He knows his trees"
unkvc.contactStore = CNContactStore()
unkvc.delegate = self
unkvc.allowsActions = false
self.navigationController?.pushViewController(unkvc, animated: true)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述