最近检测到的测试人员比使用 CNContactViewController 在应用内创建联系人时插入了无效的电话号码(例如,12345)并保存了联系人。
当他们尝试编辑联系人并更新电话号码以使其有10位数时,联系人似乎已保存,但是再次编辑它会显示旧号码(12345),并且在联系人应用程序中,联系人仍然具有旧号码。
发生这种情况时,CNContactViewControllerDelegate函数
func contactViewController(_ viewController: CNContactViewController, didCompleteWith contact: CNContact?) { }
以 nil 返回联系人。但是对于其他电话号码,它会正确返回新值。
经过Google搜索并无法找到解决方案之后,我决定创建另一个模仿CNContactViewController的viewController,但使用 CNMutableContact 和 CNSaveRequest 来更新手机联系人没有更新。
注意:仅当使用无效的电话号码创建联系人然后进行编辑时,才会发生这种情况。我像这样初始化viewController
let controller = CNContactViewController(forNewContact: nil)
然后我将它推送到navigationController