ABGroupAddMember не работает на устройстве iOS4 - PullRequest
2 голосов
/ 15 декабря 2011

код ниже прекрасно работает в симуляторе (как iOS 4, так и 5), но не добавляет контакта на устройстве iOS 4. Ошибка не возвращается. У вас есть идеи, почему?

ABAddressBookRef ab = ABAddressBookCreate();
abGroupRef = ABAddressBookGetGroupWithRecordID(ab, 1);
ABRecordRef pRef = ABAddressBookGetPersonWithRecordID(ab, 1);
ABGroupAddMember(abGroupRef, pRef, &anError);
ABAddressBookSave(ab, &anError);

Спасибо, --Josef

Ответы [ 2 ]

1 голос
/ 06 января 2012

Проблема была в том, что контакты были из гугла синхронизированы по бирже.Могут быть только локальные группы, а локальные группы могут содержать только локальные контакты.Это довольно справедливо, но ABGroupAddMember должен вернуть ошибку, если он не собирается добавлять член.

1 голос
/ 15 декабря 2011

Это хорошая практика программирования Objective C всегда проверять результат функции, которая возвращает значение BOOL (например, ABGroupAddMember или ABAddressBookSave или NSArray или NSDictionary writeToFile методы) до проверка на наличие ошибки, возвращаемой в качестве одного из параметров.

Вместо этого попробуйте что-то подобное:

ABAddressBookRef ab = ABAddressBookCreate();
ABRecordRef abGroupRef = ABAddressBookGetGroupWithRecordID(ab, 1);
ABRecordRef pRef = ABAddressBookGetPersonWithRecordID(ab, 1);
CFErrorRef anError = NULL;
NSError * anErrorAsObjectiveCObject; // for use with toll free bridged object magic

if(ABGroupAddMember(abGroupRef, pRef, &anError))
{
    if(ABAddressBookSave(ab, &anError))
    {
        NSLog(@"successfully saved");
    } else {
        anErrorAsObjectiveCObject = (__bridge_transfer NSError *) anError;
        NSLog( @"error in ABAddressBookSave - %@ %@", [anErrorAsObjectiveCObject domain], [anErrorAsObjectiveCObject localizedDescription] );
    }
} else {
    anErrorAsObjectiveCObject = (__bridge_transfer NSError *) anError;
    NSLog( @"error in ABGroupAddMember - %@ %@", [anErrorAsObjectiveCObject domain], [anErrorAsObjectiveCObject localizedDescription] );
}
...