【问题标题】:What is the ":ABPerson" string in CNContact identifier?CNContact 标识符中的“:ABPerson”字符串是什么?
【发布时间】:2017-05-13 18:57:01
【问题描述】:

我的 iOS 应用程序会不时检查联系人并将新联系人导入自己的数据库。

我通过identifier 字段检查联系人是否已经存在,该字段通常由 UUID 填充:

CNContactStore *store = [CNContactStore new];
[store requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError *error) {
if (granted) {
    NSArray *keys = @[CNContactNamePrefixKey,
        CNContactGivenNameKey,
        CNContactMiddleNameKey,
        CNContactFamilyNameKey,
        CNContactInstantMessageAddressesKey];
        NSString *containerId = store.defaultContainerIdentifier;
        NSPredicate *predicate = [CNContact predicateForContactsInContainerWithIdentifier:containerId];
        NSArray *cnContacts = [store unifiedContactsMatchingPredicate:predicate keysToFetch:keys error:&err];            
        for (CNContact *contact in cnContacts) {
            ...
            NSString *contactId = [contact identifier];
            [fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"uuid == %@", contactId]];

    ...

}

有时除了 UUID 之外的标识符包含:ABPerson 字符串(例如9326A125-3C0A-494F-9E50-BBFCF1140EF0:ABPerson),并且这样的联系人只出现一次。下一次出现相同的联系人,但使用另一个 UUID 并且没有 :ABPerson

所以,我的联系人导入器认为他们是 2 个不同的联系人并保存了 2 次。

CNContact 标识符中的:ABPerson 字符串是什么?
我知道AddressBook frameworkABPerson 类,但我使用Contacts 框架来处理设备联系人,为什么:ABPerson 出现在这里?
我可以只过滤或检查标识符中的此字符串以防止联系人重复吗?
CNContact 标识符中是否可能包含其他字符串?

【问题讨论】:

  • 你是否使用 enumeratecontactswithfetchrequest 来获取联系人?
  • 不,我正在使用unifiedContactsMatchingPredicate:predicate: 方法。我更新了我的代码,所以你可以看看这个。
  • 如果您在地址簿中使用 Google 帐户,则在保存到地址簿后,谷歌会将联系人标识符更改为不带“:APBerson”的自我标识符。在第一刻,它只是删除:ABPerson,但在重新启动后,它会将联系人标识符更改为另一个 GUID。在其他联系人提供者上,它可能是改变卡片标识符的其他规则,所以最好不要使用联系人标识符。
  • @suresh-durishetti,我使用他们的电话号码管理联系人,他们也有UUID,并且不像联系人不会在应用程序会话之间更改它们
  • 你找到这个问题的答案了吗?

标签: ios objective-c cncontact


【解决方案1】:

看起来:ABPerson 是在从“联系人”应用程序共享联系人时添加的。顺便说一句,请小心,因为即使在同一设备上,共享联系人也可能具有不同的 ID。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    • 2014-09-17
    • 2018-09-22
    • 1970-01-01
    相关资源
    最近更新 更多