iOS:地址簿不为某些联系人导入手机

时间:2014-05-04 09:23:55

标签: ios objective-c addressbookui

我想从地址簿中获取所选联系人的电话号码,然后拨打该号码,但对于某些联系人,这是实现的,而对于其他人,返回的电话号码为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;

}

1 个答案:

答案 0 :(得分:0)

我想我可能知道这个问题但是没有看你的样本数据只是预感。

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

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

NSArray* phoneNumbers;
[phoneNumbers count];

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

phoneNumbers[0]
phoneNumbers[1]