0

他の誰かのコードに取り組んでいます。私はこのコードで何が起こっているのか本当に混乱しています。

ABAddressBookRef addressBook = ABAddressBookCreate(); 
ABRecordRef persons = ABAddressBookGetPersonWithRecordID(addressBook, x);
CFErrorRef *error=NULL;
ABAddressBookRemoveRecord(addressBook, persons, error);
ABAddressBookSave(addressBook, error);

ABRecordRef persons = ABPersonCreate(); 

ABRecordSetValue(persons, kABPersonFirstNameProperty, firstName , nil);

実行する必要があるのは、ABRecordRefパーソンを作成する必要があるということです。彼のプロパティを設定し、彼の記録/詳細を表示する必要があります。彼は決して名簿に保存されるべきではありません。これはそれを行う方法ですか。助けが必要。

編集:プロパティを人物に設定する以外に、次のコードを追加して、ViewControllerをプッシュして人物を表示します。

MyContactDetailViewcontroller *personContactDetail = [[MyContactDetailViewcontroller alloc] init];
personContactDetail.displayedPerson = persons; 
personContactDetail.passedSelectedContactData = selectedContactsOnlyData;
[self.navigationController pushViewController:personContactDetail animated:YES];
[personContactDetail release];

MyContactDetailViewcontrollerサブクラスABPersonViewController。または、を使用する方が適切ですかABUnknownPersonViewController

連絡先が名簿に重複する可能性があるケースはありますか?

4

1 に答える 1

1

これはまさにここで起こっていることです..説明します..

ABAddressBookCreateアドレスブックデータベースのデータから新しいアドレスブックを作成するため、加えた変更は、ABAddressBookRefを呼び出したときにのみ実際のアドレスブックデータベースに保存されますABAddressBookSave()。つまり、それが行っているのは、recordid-を持つ人の参照を取得することですx。を使用して新しい人物エントリを作成するより

ABRecordRef persons = ABPersonCreate(); 

そして、あなたがその値を設定しているよりも、これはこの特定のオブジェクトに利用可能であり、あなたが呼び出さない限りデータベースに保存されません...ABAddressBookSave()

これがあなたを助けることを願っています...:)

于 2012-04-30T16:17:47.983 に答える