【问题标题】:Is this the right way to delete a contact from the iPhone?这是从 iPhone 中删除联系人的正确方法吗?
【发布时间】:2012-05-16 15:36:40
【问题描述】:

我正在尝试从我创建的 iPhone 中删除一个联系人。我试图找到一个删除联系人的好例子,但没有找到。添加联系人似乎很容易,但删除联系人似乎很难。以下代码不起作用,但似乎是合理的:

ABAddressBookRef addressBook = ABAddressBookCreate();
ABRecordRef delete = ABPersonCreate();

ABRecordSetValue(delete, kABPersonFirstNameProperty, @"Max", nil);
ABRecordSetValue(delete, kABPersonLastNameProperty, @"Mustermann", nil); 

ABAddressBookRemoveRecord(addressBook, delete, &error);
ABAddressBookSave(addressBook, &error);

谁能帮帮我。

提前感谢您的帮助。

最大

【问题讨论】:

    标签: iphone ios5 abaddressbook


    【解决方案1】:

    问题是您正在创建一个不在地址簿内的ABRecord。您需要做的是从ABAddressBook 中搜索ABRedords 数组。我为你写了如何做到这一点:

    CFErrorRef error = nil;
    
    ABAddressBookRef addressBook = ABAddressBookCreate();
    __block ABRecordRef toDelete = ABPersonCreate();
    
    ABRecordSetValue(toDelete, kABPersonFirstNameProperty, @"Max", nil);
    ABRecordSetValue(toDelete, kABPersonLastNameProperty, @"Mustermann", nil);
    
    // Gets the array of everybody in the address book
    NSArray *peopleArray = (__bridge NSArray *) ABAddressBookCopyArrayOfAllPeople(addressBook);
    
    // Creates a test predicate to see if the ABRecord has the same name as toDelete
    BOOL (^predicate)(id obj, NSUInteger idx, BOOL *stop) = ^(id obj, NSUInteger idx, BOOL *stop) {
        ABRecordRef person = (__bridge ABRecordRef)obj;
        CFComparisonResult result =  ABPersonComparePeopleByName(person, delete, kABPersonSortByLastName);
        bool pass = (result == kCFCompareEqualTo);
        if (pass) {
            toDelete = person;
        }
        return (BOOL) pass;
    };
    
    int idx = [peopleArray indexOfObjectPassingTest:predicate];
    
    bool removed = ABAddressBookRemoveRecord(addressBook, toDelete, &error);
    bool saved = ABAddressBookSave(addressBook, &error);
    

    您可以通过更改块代码来更改比较ABRecord 实例的方式。它现在所做的只是比较联系人的姓名。

    此代码的一个警告是,它只会删除名称与 delete 匹配的 ABRecords 的一个实例。

    【讨论】:

    • 它就像一个魅力。感谢您抽出宝贵时间回答我的问题并提供源代码。
    猜你喜欢
    • 2014-02-14
    • 2016-04-07
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多