【问题标题】:What are the Tags Around Default iPhone Address Book People Phone Number Labels?默认 iPhone 地址簿人员电话号码标签周围的标签是什么?
【发布时间】:2011-01-25 04:29:40
【问题描述】:

我的问题涉及围绕 iPhone 上联系人列表的人员条目中的一些默认电话号码标签的标记。

我已经为一个人“John Smith”创建了一个 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 通讯簿编程指南”中的何处可以找到信息?

感谢您的帮助。

【问题讨论】:

  • 您可以使用 ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(multi, i)) 去除那些标记字符。
  • 谢谢,Digdog,我不知道。

标签: iphone macos abaddressbook


【解决方案1】:

我遇到了同样的问题。这是我目前的想法。

您看到的标记向系统表明这是默认标签而不是自定义标签。如果你运行这段代码:
NSLog(kABOtherLabel);

你会得到这个结果:
_$!&lt;Other&gt;!$_

这就是存储在kABOtherLabel 常量(CFStringRef 类型)中的值。我认为iPhone 周围没有标记的原因是因为它是一个“自定义”标签,但它是由 Apple 而不是用户发起的。

您可以为标签指定任何您喜欢的值,如上面的 megaphone 标签所示。但请注意,如果您尝试创建带有“其他”标签的电话号码(或电子邮件地址)而不使用 kABOtherLabel 常量或其值 _$!&lt;Other&gt;!$_,系统会认为您正在创建自定义标签.就像在这个例子中一样:

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

如果您在 iPhone 上编辑该地址簿条目,它将显示在单独的自定义标签列表中。 (因此“其他”将有两种选择,一种在默认值中,一种在自定义标签中)

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

【讨论】:

  • 对不起,我以为我之前评论过这个,我可能忘记点击按钮了。感谢您的解释,我认为它很成功并证实了我的想法。
【解决方案2】:

这在新的CNContact framework 中基本相同,它取代了ABAddressBook 作为处理联系人的推荐方式。

Apple 提供了六个默认标签,用phone-specific CNLabelledValue constants 引用:

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

考虑到方法localizedString(forLabel:) 的可用性,在其中五个常量周围包含_$!&lt;&gt;!$_ 很可能是操作系统可以本地化字符串的标志。我相信这些分隔符没有出现在 iPhone 周围的原因是因为 Apple 没有本地化 iPhone,它在所有语言中都显示为“iPhone”。

明智的做法是在显示字符串时隐藏这些,使用localizedString(forLabel:) 发生,在编辑条目时继续将这些分隔符与字符串一起存储,并将任何用户创建的标签映射到这些字符串等于这些的主体,即Mobile、Main、Pager等。

【讨论】:

    【解决方案3】:

    我正在使用 iOS 14,不幸的是,在处理 Apple 的 Contact API 时这仍然是一个问题。我的解决方案不是最好的,但它确实有效。

    斯威夫特 5

    extension String {
        func removeMarkUpAroundContactLabel() -> String{
            var newString = self
            for _ in 0..<4{
                newString.removeFirst()
                newString.removeLast()
            }
            return newString
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-19
      • 2021-09-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多