2

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

0 に答える 0