1

アドレス帳から選択した連絡先の電話番号を取得してその番号に電話をかけたいのですが、一部の連絡先ではこれが達成され、他の連絡先では返された電話番号が NULL です! 携帯電話をチェックインして、2 つの連絡先の違いを確認しました (一方の連絡先のコードは正しい番号を返し、もう一方の連絡先のコードは NULL を返します)。および携帯電話番号)。これが起こっている理由と、電話番号を取得するための解決策にも興味があります。連絡先が利用可能な場合。前もって感謝します!

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person {
ABMultiValueRef phoneNumberProperty = ABRecordCopyValue(person, kABPersonPhoneProperty);
NSArray* phoneNumbers = (__bridge NSArray*)ABMultiValueCopyArrayOfAllValues(phoneNumberProperty);
CFRelease(phoneNumberProperty);
if (phoneNumbers[0] != NULL) {;
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"telprompt:%@", phoneNumbers[0]]]];
}
[self dismissViewControllerAnimated:YES completion:nil];
return NO;

}

4

1 に答える 1

0

私は問題を知っているかもしれないと思いますが、サンプルデータを見なければ、ただの予感です。

連絡先の 1 つが null になる理由は、そのユーザーのアドレス帳に 2 つの電話番号がリストされている可能性があるためです。1 つの電話番号は空白/値なしで、もう 1 つの電話フィールドには値があります (同じ連絡先の場合)。

コードを見てください。各連絡先のこの配列のサイズを確認してください

NSArray* phoneNumbers;
[phoneNumbers count];

これがそのうちの1つに対して2を返す場合、ユーザーの配列に2つの電話番号があることがわかり、確認する必要があります

phoneNumbers[0]
phoneNumbers[1]
于 2014-05-04T12:32:07.653 に答える