contactViewController didCompleteWith 联系人为零

contactViewController didCompleteWith contact is nil

我正在尝试添加新联系人,复制现有联系人的值。

if let mutableContact = self.editingCard?.contact.mutableCopy() as? CNMutableContact {
    let editCardViewController = CNContactViewController(for: mutableContact)
    editCardViewController.contactStore = CNContactStore()
    editCardViewController.title = "Edit Card"
    editCardViewController.delegate = self
    self.present(UINavigationController(rootViewController: editCardViewController), animated: true, completion: nil)
}

显示的 Contact View Controller 没问题。它显示联系人预填的详细信息。但是,在单击“完成”后,将在 nil 联系人引用中调用回调。即

func contactViewController(_ viewController: CNContactViewController, didCompleteWith contact: CNContact?) {
    print("Completed adding card \(contact)")
}

知道我做错了什么吗?

这似乎是因为您的 CNMutableContact 对象上的信息格式不正确。在我的例子中,日期(生日、周年纪念日和其他日期)在日期对象上设置了分钟、秒。根据 https://developer.apple.com/reference/contacts/cnmutablecontact/1403311-dates,该用例无效。

对于可能看到此问题的任何人,通过您设置的所有信息进行调试将有助于理解您的 CNMutableContact 参考中任何格式不正确的信息。