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
参考中任何格式不正确的信息。
我正在尝试添加新联系人,复制现有联系人的值。
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
参考中任何格式不正确的信息。