0

我有一组联系人,当我尝试将联系人添加到组中时,它会使我的应用程序崩溃。这是我的代码:

for (int i = 0; i < [contactArray count]; i++)
{
    ABRecordRef newPerson =  [contactArray objectAtIndex:i];
    ABRecordSetValue(newPerson, kABPersonFirstNameProperty,name, &error);
    ABRecordSetValue(newPerson, kABPersonPhoneProperty, phone,nil);
    ABAddressBookAddRecord(iPhoneAddressBook, newPerson, &error);
    ABAddressBookSave(iPhoneAddressBook, &error);

    BOOL add = ABGroupAddMember(newGroup, newPerson, &error);
    if (add) {
        NSLog(@"added");
    }
}

我的应用程序崩溃ABRecordRef newPerson = [contactArray objectAtIndex:i];

如何从数组中获取一个人的记录以将其添加到组中?

4

2 回答 2

0

利用:

ABRecordRef newPerson = (id)[contactArray objectAtIndex:i];

AABRecordRef是一个typedeffor CFTypeRef,而它又解析为const void *

于 2013-03-20T09:34:24.637 回答
0

使用下面的代码并尝试:

CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBookRef);

    CFIndex nPeople = ABAddressBookGetPersonCount(addressBookRef);
for (int i=0;i < nPeople;i++) {
 ABRecordRef ref = CFArrayGetValueAtIndex(allPeople,i);


        NSString *firstName, *lastName;
        ABMultiValueRef phones;
        firstName =(__bridge NSString *)(ABRecordCopyValue(ref, kABPersonFirstNameProperty));
        lastName  = (__bridge NSString *)(ABRecordCopyValue(ref, kABPersonLastNameProperty));
        phones = (ABMultiValueRef)ABRecordCopyValue(ref, kABPersonPhoneProperty);
 }
    CFRelease(allPeople);
于 2013-03-20T09:45:19.370 回答