我的问题涉及标记,围绕着某些缺省电话号码标签的个人条目的联系人名单上。

我已经创建了一个的iPhone联系人名单的地址簿条目的用于一个人,"约翰*史密斯"用以下手机号的条目:

  • 移动(604)123-4567
  • iPhone(778)123-4567
  • 家(604)789-4561
  • 工作(604)456-7891
  • 主(604)789-1234
  • 扩音器(234)567-8990

注意到第五个标签是默认的标签设置的接触应用程序和最后一个标签,"扩音器",是一个定义的标签。

我写了以下方法检索和显示标签和电话号码的每个人在该地址书:

-(void)displayPhoneNumbersForAddressBook {
    ABAddressBookRef book = ABAddressBookCreate();
    CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(book);
    ABRecordRef record = CFArrayGetValueAtIndex(people, 0);
    ABMultiValueRef multi = ABRecordCopyValue(record, kABPersonPhoneProperty); 
    NSLog(@"---------" );
    NSLog(@"displayPhoneNumbersForAddressBook" );

    CFStringRef label, phone;
    for (CFIndex i = 0; i < ABMultiValueGetCount(multi); ++i) {
            label = ABMultiValueCopyLabelAtIndex(multi, i);
            phone = ABMultiValueCopyValueAtIndex(multi, i);
            NSLog(@"label: \"%@\"     number: \"%@\"", (NSString*)label, (NSString*)phone);
            CFRelease(label);
            CFRelease(phone);
    }
    NSLog(@"---------" ); 
    CFRelease(multi);
    CFRelease(people);
    CFRelease(book);
}

和这里的输出地址簿条目的,我进:

2010-03-08 13:24:28.789 test2m[2479:207] ---------
2010-03-08 13:24:28.789 test2m[2479:207] displayPhoneNumbersForAddressBook
2010-03-08 13:24:28.790 test2m[2479:207] label: "_$!<Mobile>!$_"     number: "(604) 123-4567"
2010-03-08 13:24:28.790 test2m[2479:207] label: "iPhone"     number: "(778) 123-4567"
2010-03-08 13:24:28.791 test2m[2479:207] label: "_$!<Home>!$_"     number: "(604) 789-4561"
2010-03-08 13:24:28.791 test2m[2479:207] label: "_$!<Work>!$_"     number: "(604) 456-7891"
2010-03-08 13:24:28.792 test2m[2479:207] label: "_$!<Main>!$_"     number: "(604) 789-1234"
2010-03-08 13:24:28.792 test2m[2479:207] label: "megaphone"     number: "(234) 567-8990"
2010-03-08 13:24:28.793 test2m[2479:207] ---------

有什么标记符

_$!< and >!$_

周围的大多数,节省的iPhone,默认的标签?

你能告诉我到哪里"的地址簿的编程指南的iPhone OS"我可以找到信息?

谢谢你的帮助。

有帮助吗?

解决方案

我跑到同样的问题。这是什么我觉得这么远。

标记你看到的指示系统,这是一个默认的标签,而不一定义的标签。如果你跑这个代号:
NSLog(kABOtherLabel);

你会ge这样的结果:
_$!<Other>!$_

这样的价值是存在的 kABOtherLabel 常量(类型CFStringRef).我觉得原因 iPhone 没有标记,围绕着它是因为它是一个"定制"的标签,但它是一个起源的苹果,而不是用户。

你可以得到标签的任何价值的你喜欢,就证明了你的 megaphone 标签上。但是请注意,如果你尝试,并创建一个电话号码(或电子邮件地址)与标签'其他'不使用 kABOtherLabel 常数或它的价值 _$!<Other>!$_, ,该系统将认为你创造一个定义的标签。喜欢在这样的例子:

ABMultiValueAddValueAndLabel(email, @"nospam@notarealdomain.com", @"other", NULL);

如果你去和编辑,地址簿条目的在iPhone上,它将显示在一个单独的清单的定义的标签。(因此将有2个选择对"其他"一项在违约和一个自定义的标签)

虽然这没有回答了你的问题,我希望这有所帮助。

其他提示

这在很大程度上是相同的,在新的 CNContact框架 替换ABAddressBook因为建议的方式处理的联系人。

有六个默认的标签,苹果提供,这是引用 电话-具体CNLabelledValue常量:

CNLabelPhoneNumberiPhone = "iPhone"
CNLabelPhoneNumberMobile = "_$!<Mobile>!$_"
CNLabelPhoneNumberMain = "_$!<Main>!$_"
CNLabelPhoneNumberHomeFax = "_$!<HomeFAX>!$_"
CNLabelPhoneNumberOtherFax = "_$!<OtherFAX>!$_"
CNLabelPhoneNumberPager = "_$!<Pager>!$_"

列入 _$!<>!$_ 围绕五个常数是最有可能的标记的字符串可能的本地化的系统的操作,给予提供的方法 localizedString(forLabel:).我认为原因,这些定义符不会出现周围的iPhone是因为苹果没有本地化的iPhone,其中显示为"iPhone"在所有的语言。

明智的行为将被隐藏这些当显示的串,其发生使用 localizedString(forLabel:), 继续存储这些定义符的串如果编辑的条目,并将地图上的任何用户创建的签到这些字符串那里的定制标签是平等的主体的这些,即移动,主、寻呼机等等。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top