Как удалить контакт из адресной книги в iPhone с помощью target-c? - PullRequest
1 голос
/ 26 ноября 2009

Я хочу удалить контакт из адресной книги в iPhone, как мы можем это сделать?

Спасибо

Ответы [ 3 ]

1 голос
/ 08 февраля 2014

Вот пример кода для того же:

- (void)delAllContacts {
    ABAddressBookRef addressBook = CFBridgingRetain((__bridge id)(ABAddressBookCreateWithOptions(NULL, NULL)));
    int count = ABAddressBookGetPersonCount(addressBook);
    if(count==0 && addressBook!=NULL) { //If there are no contacts, don't delete
        CFRelease(addressBook);
        return;
    }
    //Get all contacts and store it in a CFArrayRef
    CFArrayRef theArray = ABAddressBookCopyArrayOfAllPeople(addressBook);
    for(CFIndex i=0;i<count;i++) {
        ABRecordRef person = CFArrayGetValueAtIndex(theArray, i); //Get the ABRecord
        BOOL result = ABAddressBookRemoveRecord (addressBook,person,NULL); //remove it
        if(result==YES) { //if successful removal
            BOOL save = ABAddressBookSave(addressBook, NULL); //save address book state
            if(save==YES && person!=NULL) {
                CFRelease(person);
            } else {
                NSLog(@"Couldn't save, breaking out");
                break;
            }
        } else {
            NSLog(@"Couldn't delete, breaking out");
            break;
        }
    }
    if(addressBook!=NULL) {
        CFRelease(addressBook);
    }
}
0 голосов
/ 24 марта 2015
+(BOOL)removedRecordFromAddressBookWithFirstValue:(NSString *)fullName{
    BOOL recordRemoved=NO;
    CFErrorRef err;
    ABAddressBookRef addressBook=
    ABAddressBookCreateWithOptions(NULL,&err);
    CFArrayRef people=ABAddressBookCopyArrayOfAllPeople(addressBook);
    CFIndex nPeople=ABAddressBookGetPersonCount(addressBook);
    NSString *currRecordFullName=[[NSString alloc] init];
    /*Invariant: No record with the name fullName has been
      found so far.*/
    for(int i=0;i<nPeople;i++){
        ABRecordRef ref=CFArrayGetValueAtIndex(people,i);
        CFErrorRef error=NULL;
        currRecordFullName=nil;
        currRecordFullName=[[NSString alloc] init];
        currRecordFullName=
        (__bridge NSString  *)ABRecordCopyCompositeName(ref);
        if([currRecordFullName isEqualToString:fullName]){
            /*The record to be deleted has been found.*/
            ABAddressBookRemoveRecord(addressBook,ref,&error);
            ABAddressBookSave(addressBook,&error);
            CFRelease(ref);
            CFRelease(addressBook);
            if(error!=NULL){
                CFStringRef errorDesc=CFErrorCopyDescription(error);
                NSLog(@"Failed to remove record: %@",errorDesc);
                CFRelease(errorDesc);
            }else{
                NSLog(@"Record removed");
                recordRemoved=YES;
            }
            break;
        }else{;}
    }
    return recordRemoved;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...