2013-03-20 2 views
0

연락처 배열이 있습니다. 그룹에 연락처를 추가하려고 할 때 응용 프로그램이 손상됩니다.연락처를 그룹에 추가 할 때 응용 프로그램이 중단됩니다.

ABRecordRef newPerson = [contactArray objectAtIndex:i];

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"); 
    } 
} 

내 응용 프로그램이 충돌 나는 어레이에서 사람의 기록을 얻을 수있는 그룹에 추가하는 방법 : 여기 내 코드는?

+0

의 충돌 OS – Bigood

+0

하는 콘솔에 표시되는 오류를 알려주세요? ios 6에서는 사용 권한 액세스 주소록 연락처 – Nims

+0

@Bigood 콘솔에 오류 로그가 없습니다. 방금 그 행에 EXC_BAD_ACCESS가 있습니다. – user2169470

답변

0

사용 :

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

ABRecordRefCFTypeRef에 대한 typedef과 차례로 그 const void *에 해결합니다. 아래

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); 
+0

안녕하세요, 작동하지만 배열에서 선택한 연락처 만 그룹에 추가하고 싶습니다. 이것으로 가능합니까? – user2169470

+0

아니요, ABAddressBookCopyArrayOfAllPeople은 주소록에있는 모든 사용자에게 줄 것입니다. 선택하려면 ABPeoplePickerNavigationController를 사용하십시오. – Nims

관련 문제