代码之家  ›  专栏  ›  技术社区  ›  Inder_iOS

如何从CNContactStore ios获取RecordID

  •  4
  • Inder_iOS  · 技术社区  · 8 年前

    这是我获取设备联系人并保存到的代码 MutableArray .

    但我需要得到 recordID recordId ).

    请帮帮我,我被困了4天。

    [contactStore enumerateContactsWithFetchRequest:request error:nil usingBlock:^(CNContact* __nonnull contact, BOOL* __nonnull stop){
               if( contact.phoneNumbers)
                    phoneNumber = [[[contact.phoneNumbers firstObject] value]];
               if( contact.emailAddresses)
                    emailAddress = [[contact.emailAddresses firstObject] value];
               contactValue=[[NSMutableDictionary alloc] init];               
                    [contactValue setValue:phoneNumber ?:@"" forKey:@"phoneNumber"];
                    [contactValue setValue:emailAddress ?:@"" forKey:@"emailAddress"];
                    [contactValue setObject:contact.identifier forKey:@"phoneIdentifier"];
                    [contactValue setObject:contact.givenName ?:@"" forKey:@"firstName"];
                    [contactValue setObject:contact.familyName ?:@"" forKey:@"lastName"];
    
               [_totalContact addObject:contactValue];
          }]
    
    2 回复  |  直到 8 年前
        1
  •  4
  •   Adeel Miraj    8 年前

    delete 联系 从基于 identifier 其中 联系 .当你有 标识符 那么这就是你所需要做的:

    - (void)deleteContactWithIdentifier:(NSString *)identifier {
    
        NSArray *keys = @[CNContactGivenNameKey,
                          CNContactPhoneNumbersKey,
                          CNContactEmailAddressesKey,
                          CNContactIdentifierKey];
        CNMutableContact *contact = [[store unifiedContactWithIdentifier:identifier keysToFetch:keys error:nil] mutableCopy];
        NSError *error;
        CNSaveRequest *saveRequest = [[CNSaveRequest alloc] init];
        [saveRequest deleteContact:contact];
        [store executeSaveRequest:saveRequest error:&error];
    }
    
        2
  •  1
  •   BelaSzombathelyi    7 年前

    如果您确实需要阅读,请使用这个简单的扩展 recordID (用于旧API)。

    记录ID 它总是被拿来的。

    此代码从不提交到应用程序商店。它使用私有API!

    CNContact+PrivateExtension.h :

    NS_ASSUME_NONNULL_BEGIN
    
    @interface CNContact (PrivateExtension)
    
    @property (readonly) NSNumber *privateRecordID;
    
    @end
    
    NS_ASSUME_NONNULL_END
    

    CNContact+PrivateExtension.m :

    @implementation CNContact (PrivateExtension)
    
    - (NSNumber *)privateRecordID
    {
        return [self valueForKey:@"recordID"];
    }
    
    @end