Ios允许为联系人存储多个家庭/移动/工作号码。有没有办法区分家庭电话号码的两个标签?我们收到所有家庭号码的标签Home。有没有选项可以区分Home1,Home2等。以下代码只检索所有相应电话号码的Home / work / Mobile
for(CFIndex j = 0; j < ABMultiValueGetCount(phones1); j++)
{
mobileLabel = (__bridge NSString*)ABMultiValueCopyLabelAtIndex(phones1, j);
if ([contactPhoneentry containsObject:mobileLabel])
{
continue;
}
if([mobileLabel isEqualToString:(NSString *)kABPersonPhoneMobileLabel])
{
home_mobile = (__bridge NSString*)ABMultiValueCopyValueAtIndex(phones1,j);
identstring = @"Mobile";
}
else if ([mobileLabel isEqualToString:(NSString*)kABPersonPhoneIPhoneLabel])
{
home_mobile = (__bridge NSString*)ABMultiValueCopyValueAtIndex(phones1,j);
identstring = @"iPhone";
}
else if([mobileLabel isEqualToString:(NSString *)kABPersonPhoneMainLabel])
{
home_mobile = (__bridge NSString*)ABMultiValueCopyValueAtIndex(phones1,j);
identstring = @"Main";
}
else if([mobileLabel isEqualToString:(NSString *)kABPersonPhonePagerLabel])
{
home_mobile = (__bridge NSString*)ABMultiValueCopyValueAtIndex(phones1,j);
identstring = @"Pager";
}
else if([mobileLabel isEqualToString:(NSString *)kABPersonPhoneHomeFAXLabel])
{
home_mobile = (__bridge NSString*)ABMultiValueCopyValueAtIndex(phones1,j);
identstring = @"Home Fax";
}
else if([mobileLabel isEqualToString:(NSString *)kABPersonPhoneWorkFAXLabel])
{
home_mobile = (__bridge NSString*)ABMultiValueCopyValueAtIndex(phones1,j);
identstring = @"Work Fax";
}
else if([mobileLabel isEqualToString:@"_$!<Home>!$_"])
{
home_mobile = (__bridge NSString*)ABMultiValueCopyValueAtIndex(phones1,j);
identstring = @"Home";
}
else if ([mobileLabel isEqualToString:@"_$!<Work>!$_"])
{
home_mobile = (__bridge NSString*)ABMultiValueCopyValueAtIndex(phones1,j);
identstring = @"Work";
}
else
{
home_mobile = (__bridge NSString*)ABMultiValueCopyValueAtIndex(phones1,j);
identstring = @"Other";
}
这是检索电话号码和标签的正确方法吗?
答案 0 :(得分:1)
我不确定我是否完全理解您要完成的任务,但您不应该使用该标签来区分一部手机,因为您知道,这些标签并不是唯一的。 multiValueRef中的每个值(在本例中为每个电话号码)都具有唯一标识符。此标识符对于多值中的其他标识符是唯一的,因此即使您有多个具有相同标签的数字,也可以将其用于标识符电话号码。
在上面的代码中,您可以通过调用
获取电话号码标识符int identifier = ABMultiValueCopyLabelAtIndex(phones1, j);
看起来您发布的代码在将地址簿中的标签转换为本地化标签(即'_ $!&lt; Work&gt;!$ _'到'work')时会遇到很多麻烦。地址簿框架具有为您处理此问题的功能 - ABAddressBookCopyLocalizedLabel()。例如 -
NSString *localizedString = (__bridge NSString *)ABAddressBookCopyLocalizedLabel(kABPersonPhoneMobileLabel);
这会将localizedString设置为“mobile”。
答案 1 :(得分:0)
无法区分标签。 IOS(和OSX)不需要ABMultiValue
中标签的唯一性。例如,可以有多个家庭电话号码。这也适用于地址,电子邮件,社交档案等。