2013-03-20 122 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

請提供控制檯 – Bigood 2013-03-20 09:29:44

+0

在其操作系統的崩潰上顯示的錯誤?在ios 6中,您可以使用地址簿聯繫人獲得權限訪問 – Nims 2013-03-20 09:37:29

+0

@Bigood在控制檯上沒有任何錯誤日誌我剛在該行上獲得了EXC_BAD_ACCESS。 – user2169470 2013-03-20 09:41:44

回答

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 2013-03-20 10:20:26

+0

不,ABAddressBookCopyArrayOfAllPeople將爲地址簿中的所有人員提供服務。對於您的選擇,您使用ABPeoplePickerNavigationController – Nims 2013-03-20 10:28:59

相關問題