从地址簿中仅获取移动部分记录(不是来自iphone,家庭标签等)?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从地址簿中仅获取移动部分记录(不是来自iphone,家庭标签等)?相关的知识,希望对你有一定的参考价值。

如何从ios中的地址簿中仅获取移动部分记录?

我想只向我的数组添加一条记录,该记录是从移动部分记录中提取的。

我怎么做。我收到了所有电话属性记录。但我只需要获得移动部分记录。

NSArray *allPeople = (NSArray *)ABAddressBookCopyArrayOfAllPeople(myAddressBook);
NSLog(@"allpeople%@", allPeople);

for (id record in allPeople) {
    CFTypeRef phoneProperty = ABRecordCopyValue((ABRecordRef)record, kABPersonPhoneProperty);
    NSArray *phones = (NSArray *)ABMultiValueCopyArrayOfAllValues(phoneProperty);

    NSLog(@"phones %@",phones);

    CFRelease(phoneProperty);
    NSMutableDictionary *newRecord = [[NSMutableDictionary alloc] init];
    NSMutableString *newPhone = [[NSMutableString alloc] init];

    for (NSString *phone in phones) {
        if(![newPhone isEqualToString:@""])
            [newPhone appendString:@", "];
        [newPhone appendString:phone];
    }
答案

你可以试试这样的东西......

ABMultiValueRef phoneNumbers = ABRecordCopyValue(abPerson, kABPersonPhoneProperty);
    if (phoneNumbers) {
        CFIndex numberOfPhoneNumbers = ABMultiValueGetCount(phoneNumbers);
        for (CFIndex i = 0; i < numberOfPhoneNumbers; i++) {
            NSString *phone = (__bridge_transfer NSString *)ABMultiValueCopyValueAtIndex(phoneNumbers, i);
            CFStringRef label = ABMultiValueCopyLabelAtIndex(phoneNumbers, i);
            if (label) {
                if (CFEqual(label, kABPersonPhoneMobileLabel)) {
                    primaryPhoneText.text = phone;
                } else {
                }
                CFRelease(label);
                [allPhones addObject:phone]; // allPhones is an array here.
            }
        }
        CFRelease(phoneNumbers);
    }

希望这会帮助你...

享受编码..

以上是关于从地址簿中仅获取移动部分记录(不是来自iphone,家庭标签等)?的主要内容,如果未能解决你的问题,请参考以下文章

如何从方法http Get in service Api Angular中仅获取前10条记录

如何从左表中仅获取一条记录与右表中的每条记录

是否可以在 iOS 中获取移动数据 IP 地址? (不是服务商的公网IP)

如何从数据中仅获取访问令牌

如何在APEX SOQL查询中仅显示包含相同字段值的一条记录

从 charles 代理记录中排除主机