2012-04-30 11 views
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担当者を作成する必要があることです。彼のプロパティを設定し、彼の記録/詳細を表示する必要があります。彼は決してアドレス帳に保存すべきではありません。これはそれを行う方法ですか?助けが必要。

編集:プロパティをpersonに設定する以外に、次のコードを追加して、表示コントローラをプッシュして相手を表示します。

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

MyContactDetailViewcontrollerサブクラスABPersonViewController。または、ABUnknownPersonViewControllerを使用する方が適していますか?

あなたは

ABAddressBookCreateは、データから新しいアドレス帳を作成します..私は説明します。..接点はこれがここで起こっている正確に何であるアドレス帳

答えて

1

に複製することができ任意の例を見つけるのですかABAddressBookRefに行った変更は、ABAddressBookSave()に電話すると、実際のアドレス帳データベースにのみ保存されます。それで、それは、recordid-xを持つ人の参照を取得することです。あなたは、その値を設定している

ABRecordRef persons = ABPersonCreate(); 

とよりを使用して、新しい人のエントリを作成しているが、これは

ABAddressBookSave()が望ん...この特定のオブジェクトに利用可能とあなたは呼び出さない限り、データベースに格納されていないよりも、これは役に立ちます... :)

+0

ABAddressBookSave()が呼び出されると、その人は実際にアドレス帳に保存され、そのプロパティの変更もアドレス帳に反映されます。そうですか? –

+0

人が作成された後にABAddressBookSave()が呼び出されないようにします。 ABAddressBookSave()をYESよりも呼び出すと(その時点までに行った変更のみ) –

+0

'ABAddressBookSave(addressBook、error);'。このコードは何をしますか?それは何のプロパティもなく人を救うのですか? –

関連する問題