私のアプリケーションとiPhoneのアドレス帳との統合に取り組んでいます。ここに私のプログラムの流れがあります。連絡先が選択後にアドレス帳から削除される
- ユーザーが接触
- アプリケーションをインポートしたいユーザーに「ABPeoplePickerNavigationController」を提示します。
- デリゲートメソッドが呼び出される:ここで
コードです:
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker
shouldContinueAfterSelectingPerson:(ABRecordRef)person {
self.selectedContact = person;
[self showNewContactViewThroughController:peoplePicker withRecord:person];
NSLog(@"should continue after selecting");
return NO;
}
5:- (void)showNewContactViewThroughController:withRecord:
で我々はAbNewPersonViewControllerを作成
`ABNewPersonViewController *newController = [[ABNewPersonViewController alloc] init];`
`newController.displayedPerson = person;`
`newController.newPersonViewDelegate = self;`
次に押してください。
6:ABNewPersonViewControllerビューを終了するには、「キャンセル」をクリックします。
7:連絡先アプリを確認すると、手順3で選択した連絡先がなくなりました。偽り、削除、削除、削除
この問題を解決するために、ABRecordRefをインスタンス変数 "selectedContact"に保存します。その後、- (void)newPersonViewController:didCompleteWithNewPerson:
に私が持っている:
if (person) {
//do stuff with the person
else {
///
/// This means they canceled, so we need to save the old person back
///
if (self.selectedContact) {
ABAddressBookRef addressBook = ABAddressBookCreate();
CFErrorRef error = NULL;
ABAddressBookAddRecord(addressBook, self.selectedContact, &error);
if (error != NULL) {
NSLog(@"Error Adding Record: %@", error);
}
ABAddressBookSave(addressBook, &error);
if (error != NULL) {
NSLog(@"AccountDetailTableViewController.newPersonViewController() The old contact was not saved successfully. %@", error);
}
self.selectedContact = nil;
}
}
しかし、これは何もしていないようです。コードは実行されますが、 "Old Contact"、self.selectedContactはAddressBookに保存されません。だから私の連絡先はまだ消えています。私は間違って何をしていますか?それはABNewPersonViewControllerでキャンセルを押すと、アドレス帳から与えられたデータを "削除"するように見えますか?だから私がそれを与える人は死ぬ?どんな助けもありがとう!