2

このコードに問題があった人はいますか...

ABRecordRef person = ABAddressBookGetPersonWithRecordID (addressBook,recordID);

私はこれまでこれに大きな問題を抱えてきました。以前にこの質問を投稿しましたコアデータモデル/連絡先データベースにアクセスする際の断続的なエラー

しかし、正当な addressBook と recordID の値があるにもかかわらず、このメソッドが NULL 値を返すことを突き止めました。

なぜこれが起こっているのでしょうか?

どうもありがとう

4

2 に答える 2

1

他の人に役立つ場合に備えて回答を投稿...

問題はメモリに関連していたことが判明しました。ABAddressBookCreate() で addressBook を作成しました。これはループ内で発生していたため、何度も作成されていました。解決策は、作成をループの外に移動し、CFRelease(addressBook); でバランスを取ることでした。指図。

これが他の人に役立つことを願っています!!

于 2012-04-15T06:19:30.000 に答える
0

連絡先リストからレコードを追加、編集、削除してアドレス帳を正常に作成しました。そのようなタイプのエラーは発生しません。これを.hファイルに入れます...

ABRecordID 
recordID;

次のコードを

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person
{
 recordID = ABRecordGetRecordID(person);
 NSLog(@"Record id is %d",recordID);
}

その中でreoord idを取得すれば、そのような問題は発生しないと思います。やってみよう ...

于 2012-04-09T10:52:51.543 に答える