【问题标题】:Get label names for ABPerson properties获取 ABPerson 属性的标签名称
【发布时间】:2015-03-23 19:50:39
【问题描述】:

我想获取 ABPerson 对象属性的所有标签名称。例如:记录 ABPerson 定义了三个电话号码:Mobile、Other、Work。我使用 labelAtIndex 方法获取标签名称,但返回的字符串包含用字符 $!!$ 包裹的所需值。我得到这些“_$!

我有以下代码:

//person object points to ABPerson record from addressBook
ABMultiValue *phoneNumbers = [person valueForProperty:kABPhoneProperty];

NSUInteger count = [phoneNumbers count];

for (int i = 0; i < count; i++) {
    NSLog(@"Phone numbers label: %@ value: %@", [phoneNumbers labelAtIndex:i], [phoneNumbers valueAtIndex:i]);        
}

在日志中我得到以下信息:

2012-01-23 01:14:04.234 FixMyAddressBook[3667:707] Phone numbers label: _$!<Mobile>!$_ value: +327382738273
2012-01-23 01:14:04.370 FixMyAddressBook[3667:707] Phone numbers label: _$!<Work>!$_ value: +3293829328

有人能指点我吗?如何获取不带特殊字符的属性的标签名称?

【问题讨论】:

    标签: cocoa properties addressbook labels


    【解决方案1】:

    据我所知,您需要获取该项目的本地化标签,您需要确保使用正确的参考代码。

    // Grab the right property first
    ABMutableMultiValueRef phoneNumbers = ABRecordCopyValue(person, kABPersonPhoneProperty);
    CFIndex phoneNumberCount = ABMultiValueGetCount(phoneNumbers);
    
    for(int k = 0; k < phoneNumberCount; k++)
            {
    
            //Get phone number label by iterating across this
                CFStringRef phoneNumberValue = ABMultiValueCopyValueAtIndex( phoneNumbers, k );
    
    CFStringRef phoneNumberLabel = ABMultiValueCopyLabelAtIndex(phoneNumbers, i);
                CFStringRef phoneNumberLocalizedLabel = ABAddressBookCopyLocalizedLabel( phoneNumberLabel );    
    // converts "_$!<Work>!$_" to "work" and "_$!<Mobile>!$_" to "mobile"
    //do whatever you want to do here
    //release your references
            CFRelease(phoneNumberLocalizedLabel);
    CFRelease(phoneNumberValue);
    }
    

    【讨论】:

      猜你喜欢
      • 2014-09-13
      • 1970-01-01
      • 2013-05-11
      • 2019-04-04
      • 2011-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多