0

だから私はこのメソッドを呼び出しています:

- (void)newPersonViewController:(ABNewPersonViewController*)newPersonViewController didCompleteWithNewPerson:(ABRecordRef)person

ABRecordRef を返します。しかし、ABGroupAddMember を使用しているグループには表示されません。

ABRecordRef を手動で作成すると、グループを設定できますが、デリゲート メソッドから返された人物オブジェクトを使用することはできません。

たとえば、このコードは機能します (ここの投稿から借用、リンクが見つかりません):

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 オブジェクトでそのコードを機能させるにはどうすればよいですか?

ありがとう。

4

1 に答える 1

0

OK、それで修正しました(質問をすると、解決する気が晴れる場合があります)

int i = ABRecordGetRecordID(person);
ABRecordRef p = ABAddressBookGetPersonWithRecordID(addressBook,i);

新しい ABRecordRef を正しく作成すると、問題が解決するようです。理由はわかりません。多分誰かがあなたがそれを作り直す必要がある理由を言うことができますか?

于 2012-05-10T06:54:38.230 に答える