1

基本上我有一个Conversation具有属性的对象,contact: CNContact?我想做的是在更新时更新联系信息。我现在正在做的是订阅Notification.Name.CNContactStoreDidChange通知,从中获取CNNotificationSaveIdentifiersKey标识符数组userInfo并比较是否有任何 ID 等于对话的联系人 ID。

问题是没有一个 id 匹配,它们甚至有不同的格式

对话联系人标识符:68269F08-6B22-4B69-BEA1-431805F328D1:ABPerson

通知联系人标识符:6F959AA0-5EEF-4C38-B9C7-BEA57F270927

问题是:这是识别更新联系人的正确方法吗?

这是代码:

//somewhere in the conversation object
NotificationCenter.default.addObserver(forName: Notification.Name.CNContactStoreDidChange, object: nil, queue: .main) { (notification) in            
            guard
                let conversationContact = self.contact,
                let userInfo = notification.userInfo,
                let indentifiers = userInfo["CNNotificationSaveIdentifiersKey"] as? [String],
                let notificationIdentifier = indentifiers.first else {
                return
            }

            print(conversationContact.formattedName ?? "nil name")
            print("conversationContact.identifier \(conversationContact.identifier)")

            print("notificationIdentifier \(notificationIdentifier)")

            if conversationContact.identifier == notificationIdentifier {
                self.contact = nil
            }
        }
    ```
4

0 回答 0