Iphone Добавить контакт в существующую группу в адресной книге - PullRequest
1 голос
/ 21 апреля 2011

Привет,

Я работаю над приложением для iphone, которое работает с контактами адресной книги. Я пытаюсь создать группы контактов, но проблема в том, что при повторном запуске приложения группа снова создается, и новый контакт сохраняется в этой новой созданной группе.

// create address book record
ABAddressBookRef addressBook = ABAddressBookCreate(); 
// create a person  
ABRecordRef person = ABPersonCreate(); 
// name of the new person

ABRecordSetValue(person, kABPersonFirstNameProperty, [index objectAtIndex:3], nil);  

ABRecordSetValue(person, kABPersonLastNameProperty, [index objectAtIndex:0], nil);


//add the new person to the record
ABAddressBookAddRecord(addressBook, person, nil); 

ABAddressBookSave(addressBook, &error);

ABAddressBookAddRecord(addressBook, group, &error); // add the group   
ABAddressBookSave(addressBook, &error);
ABRecordRef group = ABGroupCreate(); //create a group           
ABGroupAddMember(group, person, &error); // add the person to the group         
ABAddressBookSave(addressBook, &error);

//save the record
ABAddressBookSave(addressBook, nil);  

// relase the ABRecordRef  variable
CFRelease(person);  

Это код, над которым я работал. Я действительно ценю любую возможную помощь

Спасибо

Ответы [ 2 ]

1 голос
/ 21 апреля 2011

ABRecordRef group = ABGroupCreate();,

Это создаст новую группу ... Если вы хотите добавить участника в существующую группу, вы должны получить группу по ее идентификатору. Обновлен код

 ABRecordRef group = ABAddressBookGetGroupWithRecordID(addressBookInstance,putYourGroupIdHere);

Спасибо,

0 голосов
/ 23 октября 2012
ABAddressBookRef ab = ABAddressBookCreate();
CFErrorRef error;
MySource *source = [sourcesAndGroups objectAtIndex:0];
ABRecordRef group = [source.groups objectAtIndex:self.IndexValue]; //Get the Group Name

NSString *firstName = ABRecordCopyValue(person, kABPersonFirstNameProperty);
NSString *lastName  = ABRecordCopyValue(person, kABPersonLastNameProperty);

ABRecordSetValue(group, kABGroupNameProperty,[self nameForGroup:group], &error);
ABAddressBookAddRecord(ab, group, &error);
ABAddressBookSave(ab, &error);
//Create new Person and save to this group
ABRecordRef record = ABPersonCreate();
BOOL isSuccess ;

isSuccess  = ABRecordSetValue(record, kABPersonNicknameProperty,lastName, &error);
isSuccess = ABRecordSetValue(record, kABPersonMiddleNameProperty, firstName , &error);

ABMultiValueRef phoneNumbers = (ABMultiValueRef)ABRecordCopyValue(person, kABPersonPhoneProperty);
if(ABMultiValueGetCount(phoneNumbers) == 0)
{
    UIAlertView *av = [[UIAlertView alloc] initWithTitle:@"Phone Number" message:@"Please enter Phone number" delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
    [av show];
    return;
}
CFRelease(phoneNumbers);
NSString* phoneNumber = (NSString*)ABMultiValueCopyValueAtIndex(phoneNumbers, 0);    

ABMutableMultiValueRef multi = ABRecordCopyValue(record, kABPersonEmailProperty);
ABMutableMultiValueRef copyOfPhones = ABMultiValueCreateMutable(kABPersonPhoneProperty);


ABMultiValueAddValueAndLabel(copyOfPhones, phoneNumber,kABPersonPhoneMobileLabel,NULL);
isSuccess = ABRecordSetValue(record, kABPersonPhoneProperty, copyOfPhones, &error);
isSuccess = ABRecordSetValue(record, kABPersonEmailProperty, multi, &error);

isSuccess = ABAddressBookAddRecord(ab, record, &error);
isSuccess = ABAddressBookSave(ab, &error);

ABGroupAddMember(group, record, &error);

NSLog(@"is success %d", isSuccess);

ABAddressBookSave(ab, &error);
CFRelease(group);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...