我有一个应用程序可以将 300 多个联系人添加到通讯录中。如果我在添加它们后立即转身删除它们,它们不会完全从 icloud 中删除。它们最初会从本地地址簿中删除,但仍会添加到 icloud。一旦将它们添加到 icloud 中,它们就会同步回我的本地通讯录。知道如何删除联系人吗?如果我等待一段时间(即直到所有联系人都真正进入 icloud)它工作正常。但是,如果我在它们进入 icloud 之前就开始删除它们,它们并不会全部被删除。
这是我用来从通讯录中读取所有联系人的代码 - 我检查联系人的姓名,如果它与我列表中的一个匹配,我将其删除。
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, &myError);
NSMutableArray *names=[[NSMutableArray alloc] init];
//Get all names from default contacts list
for (int i=0;i<[AB.defaultContacts count];i++) {
NSDictionary *plistDict = plistDict = [AB.defaultContacts objectAtIndex:i];
names[i] = [plistDict objectForKey:@"kABPersonOrganizationProperty"];
}
NSArray *contactArray = (__bridge NSArray *)ABAddressBookCopyArrayOfAllPeopleInSource(addressBook,ABAddressBookCopyDefaultSource(addressBook));
//Search through all actual address book contacts
for (id contact in contactArray) {
//search name from default contacts list
for (id name in names) {
//Get name for current contact from address book
NSString *tmp=(NSString *)CFBridgingRelease(ABRecordCopyValue(CFBridgingRetain(contact),kABPersonOrganizationProperty));
//If name from address book matches name from default contacts - zap it
if ([tmp isEqualToString:name]) {
ABAddressBookRemoveRecord(addressBook, CFBridgingRetain(contact), nil);
deletedContacts++;
}
}
}
ABAddressBookSave(addressBook, nil);
CFRelease(addressBook);