如何使用CONTACTS Framework ios 9删除iPhone地址簿中的记录?

时间:2016-03-11 13:16:40

标签: ios objective-c iphone

我想从我的应用程序中删除来自手机联系人的联系人,因为在i os 9中不推荐使用此ABAddressBookRemoveRecord方法。所以现在我该如何删除联系人。 联系人框架中是否有任何方法?

谢谢大家!

2 个答案:

答案 0 :(得分:2)

在iOS9中不推荐使用完整的AddressBook Framework,您应该查看Contacts Framework: Contacts Framework

一个很好的教程,解释删除记录here

本教程涵盖了Swift,但同样的原则也适用于Objective-C。

答案 1 :(得分:1)

如果您想使用CNContacts

一次删除所有联系人,请输入以下代码
- (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) {
                    [saveRequest deleteContact:[contact mutableCopy]];
                }

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

}