iPhone: добавлять, обновлять и удалять контакты программно - PullRequest
1 голос
/ 25 декабря 2009

Я новичок в программировании iPhone Я хочу спросить, могу ли я добавить, обновить или удалить контакт из списка контактов iPhone. Пожалуйста, предложите или предоставьте мне полезную ссылку.

Ответы [ 2 ]

2 голосов
/ 25 декабря 2009

Apple имеет обширные документы для доступа к адресной книге в целом и для управления контактами . Однако он основан на C, а не на Objective-C.

0 голосов
/ 18 июня 2018

Удалить контакт:

     - (void) deleteAllContacts {
CNContactStore *contactStore = [[CNContactStore alloc] init];

[contactStore requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError * _Nullable error) {
    if (granted == YES) {
        NSArray *keys = @[CNContactPhoneNumbersKey];
        NSString *containerId = contactStore.defaultContainerIdentifier;
        NSPredicate *predicate = [CNContact predicateForContactsInContainerWithIdentifier:containerId];
        NSError *error;
        NSArray *cnContacts = [contactStore unifiedContactsMatchingPredicate:predicate keysToFetch:keys error:&error];

        if (error) {
            NSLog(@"error fetching contacts %@", error);
        } else {
            CNSaveRequest *saveRequest = [[CNSaveRequest alloc] init];

            for (CNContact *contact in cnContacts) {
     //Here write the necessary condition to filter the contacts which you want to delete .  
                [saveRequest deleteContact:[contact mutableCopy]];
            }

            [contactStore executeSaveRequest:saveRequest error:nil];
            DDLogVerbose(@"Deleted contacts %lu", cnContacts.count);
        }
    }
}];

}

Добавить контакт:

    CNAuthorizationStatus status = [CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts];
if (status == CNAuthorizationStatusDenied || status == CNAuthorizationStatusRestricted) {
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Access to contacts" message:@"This app requires access to contacts" preferredStyle:UIAlertControllerStyleActionSheet];
    [alert addAction:[UIAlertAction actionWithTitle:@"Go to settings" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString] options:@{} completionHandler:nil];
    }]];
    [alert addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:nil]];
    [self presentViewController:alert animated:TRUE completion:nil];
    return;
}
CNContactStore *store = [[CNContactStore alloc] init];
[store requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError * _Nullable error) {
    if (!granted) {
        dispatch_async(dispatch_get_main_queue(), ^{
            //user didn't grant access
        });return;}
    //create contact
    CNMutableContact *contact = [[CNMutableContact alloc] init];
    NSMutableString *temp = [[NSMutableString alloc] initWithString:newContactName];
    [temp appendString:@"(PATIENT)"];
    NSString *immutable = [NSString stringWithString:temp];
    contact.givenName = immutable;

    CNLabeledValue *homePhone = [CNLabeledValue labeledValueWithLabel:CNLabelHome value:[CNPhoneNumber phoneNumberWithStringValue:mobileNumberOfPatient]];
    contact.phoneNumbers = @[homePhone];
    CNSaveRequest *request = [[CNSaveRequest alloc] init];
    [request addContact:contact toContainerWithIdentifier:nil];
    [self.activityIndicator setHidden:YES];
    [self.activityIndicator stopAnimating];
    [self shareViaWhatsApp];
    //save it
    NSError *saveError;
    if (![store executeSaveRequest:request error:&saveError]) {
        NSLog(@"error: %@",saveError);
    }
}];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...