アドレス帳に 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);