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

我想我可能知道问题所在,但没有查看您的示例数据,这只是一种预感。

您的联系人之一为 null 的原因是,对于该用户,他的地址簿中可能列出了 2 个电话号码。一个电话号码为空白/无值,而另一个电话字段确实有值(对于同一联系人)。

看看你的代码。检查每个联系人的这个数组的大小

NSArray* phoneNumbers;
[phoneNumbers count];

如果其中一个返回 2,那么您知道该用户的数组中有两个电话号码,您需要检查

phoneNumbers[0]
phoneNumbers[1]
于 2014-05-04T12:32:07.653 回答