Objective C将联系人添加到iPhone中的特定组

我正在制作一个存储通讯簿中的联系人的应用程序,我正在使用Xcode 4.2

我知道如何在地址簿中添加一个联系人,比方说我在联系人列表中有一个名为“A”的组,我想将此联系人添加到该组中,该怎么做?

这里是我正在使用的代码:

ABAddressBookRef *iPhoneAddressBook = ABAddressBookCreate(); ABRecordRef contact = ABPersonCreate(); //add infos ABRecordSetValue(contact, kABPersonFirstNameProperty,(__bridge_retained CFStringRef)firstName, nil); ABRecordSetValue(contact, kABPersonLastNameProperty,(__bridge_retained CFStringRef)lastName, nil); ABRecordSetValue(contact, kABPersonOrganizationProperty, (__bridge_retained CFStringRef)organization, nil); ABRecordSetValue(contact, kABPersonJobTitleProperty, (__bridge_retained CFStringRef)title, nil); ABMultiValueRef multiPhone = ABMultiValueCreateMutable(kABMultiRealPropertyType); ABMultiValueAddValueAndLabel(multiPhone, (__bridge_retained CFStringRef)workTel, kABWorkLabel, NULL); ABMultiValueAddValueAndLabel(multiPhone, (__bridge_retained CFStringRef)workFax, kABPersonPhoneWorkFAXLabel, NULL); ABRecordSetValue(contact, kABPersonPhoneProperty, multiPhone, nil); CFRelease(multiPhone); ABAddressBookAddRecord(iPhoneAddressBook, contact, nil); 

谢谢

首先检查组是否存在:

  -(void) CheckIfGroupExistWithName:(NSString*)groupName { BOOL hasGroup = NO; //checks to see if the group is created ad creats group for HiBye contacts ABAddressBookRef addressBook = ABAddressBookCreate(); CFIndex groupCount = ABAddressBookGetGroupCount(addressBook); CFArrayRef groupLists= ABAddressBookCopyArrayOfAllGroups(addressBook); for (int i=0; i<groupCount; i++) { ABRecordRef currentCheckedGroup = CFArrayGetValueAtIndex(groupLists, i); NSString *currentGroupName = (NSString *)ABRecordCopyCompositeName(currentCheckedGroup); if ([currentGroupName isEqualToString:groupName]){ //!!! important - save groupID for later use self.groupId = ABRecordGetRecordID(currentCheckedGroup); hasGroup=YES; } [groupName release]; } if (hasGroup==NO){ //id the group does not exist you can create one [self createNewGroup:groupName]; } //CFRelease(currentCheckedGroup); CFRelease(groupLists); CFRelease(addressBook); 

}

使用这个来创build新的组,并存储它的ID

 -(void) createNewGroup:(NSString*)groupName { ABAddressBookRef addressBook = ABAddressBookCreate(); ABRecordRef newGroup = ABGroupCreate(); ABRecordSetValue(HiByeGroup, kABGroupNameProperty,groupName, nil); ABAddressBookAddRecord(addressBook, newGroup, nil); ABAddressBookSave(addressBook, nil); CFRelease(addressBook); //!!! important - save groupID for later use self.groupId = ABRecordGetRecordID(newGroup); CFRelease(newGroup); 

}

这是如何设置联系人到一个组

  //Use the Group ID you stored. ABRecordRef HiByeGroup = ABAddressBookGetGroupWithRecordID(addressbook, self.groupId); BOOL didAdd = ABGroupAddMember(HiByeGroup,ref,&error); if (!didAdd) { // Update to handle the error appropriately. NSLog(@"Unresolved error while adding person to HiBye group %@", &error); exit(-1); // Fail } BOOL didSave = ABAddressBookSave(addressbook, &error); if (!didSave) { // Update to handle the error appropriately. NSLog(@"Unresolved error while saving address book%@", &error); exit(-1); // Fail } 

祝你好运

试用malinois最初发布的代码:

 ABAddressBookRef addressBook = ABAddressBookCreate(); // create address book record ABRecordRef person = ABPersonCreate(); // create a person NSString *phone = @"0123456789"; // the phone number to add //Phone number is a list of phone number, so create a multivalue ABMutableMultiValueRef phoneNumberMultiValue = ABMultiValueCreateMutable(kABPersonPhoneProperty); ABMultiValueAddValueAndLabel(phoneNumberMultiValue ,phone,kABPersonPhoneMobileLabel, NULL); ABRecordSetValue(person, kABPersonFirstNameProperty, @"FirstName" , nil); // first name of the new person ABRecordSetValue(person, kABPersonLastNameProperty, @"LastName", nil); // his last name ABRecordSetValue(person, kABPersonPhoneProperty, phoneNumberMultiValue, &anError); // set the phone number property ABAddressBookAddRecord(addressBook, person, nil); //add the new person to the record ABRecordRef group = ABGroupCreate(); //create a group ABRecordSetValue(group, kABGroupNameProperty,@"My Group", &error); // set group's name ABGroupAddMember(group, person, &error); // add the person to the group ABAddressBookAddRecord(addressBook, group, &error); // add the group ABAddressBookSave(addressBook, nil); //save the record CFRelease(person); // relase the ABRecordRef variable 

希望这可以帮助。