ABPeoplePickerNavigationControllerDelegateを実装するときに、この奇妙な問題が発生しました。そのため、デリゲートメソッドで識別子の値が誤って取得されることがありました
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier;
たとえば、連絡先から最初の番号を選択した場合、識別子は0である必要があります。しかし、場合によっては1でした(その連絡先の番号が1つしかない場合でも)!!
それを確認するのは簡単です、
...
ABMultiValueRef phoneProperty = ABRecordCopyValue(person,property);
int count = ABMultiValueGetCount(phoneProperty);
NSLog(@"How many numbers do I have %d and which number do I choose %d",count,identifier);
そしてそれはいつかこれを印刷しました
私はいくつの番号を持っていますか1そしてどの番号を選択しますか1
誰かが同じ問題にぶつかったことはありますか?
更新:識別子がカウントよりも大きい場合があります。どうして!!
2つある番号と3つ選ぶ番号はいくつありますか