所以我称之为这个方法:
- (void)newPersonViewController:(ABNewPersonViewController*)newPersonViewController didCompleteWithNewPerson:(ABRecordRef)person它返回一个ABRecordRef。但是我不能用ABGroupAddMember把它给一个团体看。
如果手动创建ABRecordRef,则可以设置组,但不能使用委托方法返回的person对象。
例如,这段代码可以工作(从这里的帖子借用,找不到链接):
CFErrorRef error = NULL;
// create address book record
ABAddressBookRef addressBook = ABAddressBookCreate();
// create a person
ABRecordRef person = ABPersonCreate();
// first name of the new person
ABRecordSetValue(person, kABPersonFirstNameProperty, @"FirstName" , nil);
// his last name
ABRecordSetValue(person, kABPersonLastNameProperty, @"LastName", nil);
//add the new person to the record
ABAddressBookAddRecord(addressBook, person, nil);
ABAddressBookSave(addressBook, &error);
ABRecordRef group = ABGroupCreate(); //create a group
ABRecordSetValue(group, kABGroupNameProperty,@"My Group", &error); // set group's name
ABAddressBookAddRecord(addressBook, group, &error); // add the group
ABAddressBookSave(addressBook, &error);
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); 如何使该代码与返回的Person ABRecordRef对象一起工作?
谢谢。
发布于 2012-05-10 06:54:38
好的,所以修正了(有时候问这个问题会让你头脑清醒,去解决它)
int i = ABRecordGetRecordID(person);
ABRecordRef p = ABAddressBookGetPersonWithRecordID(addressBook,i);正确创建一个新的ABRecordRef似乎解决了这个问题。不知道为什么。也许有人能说出你为什么要重铸它?
https://stackoverflow.com/questions/10528531
复制相似问题