Closed. This question is off-topic。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
4年前关闭。
我正在构建一个iOS应用程序,试图在其中获取所有电话联系人并显示它们。
现在的问题是,如果存在用一个名字保存两个电话号码的情况,那么在我的列表中只会显示第一个电话号码。
我需要检索针对一个特定联系人保存的两个号码。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
4年前关闭。
我正在构建一个iOS应用程序,试图在其中获取所有电话联系人并显示它们。
现在的问题是,如果存在用一个名字保存两个电话号码的情况,那么在我的列表中只会显示第一个电话号码。
我需要检索针对一个特定联系人保存的两个号码。
最佳答案
从方法shouldContinueAfterSelectingPerson
中,您可以获取所选person
的引用,还可以获取其他电话号码,例如,
multi = ABRecordCopyValue(person, kABPersonPhoneProperty);
for(i=0; i< ABMultiValueGetCount(multi);i++)
{
NSMutableString *numb = (__bridge NSMutableString*)ABMultiValueCopyValueAtIndex(multi, i);
//next 5 line will make numbers are clear digit, without symbols.
numb = [NSMutableString stringWithFormat:@"%@",[numb stringByReplacingOccurrencesOfString:@" " withString:@""]];
numb = [NSMutableString stringWithFormat:@"%@",[numb stringByReplacingOccurrencesOfString:@"(" withString:@""]];
numb = [NSMutableString stringWithFormat:@"%@",[numb stringByReplacingOccurrencesOfString:@")" withString:@""]];
numb = [NSMutableString stringWithFormat:@"%@",[numb stringByReplacingOccurrencesOfString:@"-" withString:@""]];
numb = [NSMutableString stringWithFormat:@"%@",[numb stringByReplacingOccurrencesOfString:@"." withString:@""]];
NSString *valAtIndex = (__bridge NSString *)ABMultiValueCopyLabelAtIndex(multi,i);
if([valAtIndex isEqualToString:@"_$!<Mobile>!$_"] || [valAtIndex isEqualToString:@"_$!<Other>!$_"])
mobileNumber = numb;
if ([valAtIndex isEqualToString:@"_$!<Home>!$_"])
homeNumber = numb;
if ([valAtIndex isEqualToString:@"_$!<Work>!$_"])
WorkNuimber = numb;
}