排序ABMultiValueRef(kABPersonPhoneProperty)

时间:2015-09-23 05:47:50

标签: ios objective-c nsstring abaddressbook abmultivalue

好吧,为了获得带ABAddressBook的手机属性,我使用循环。

编辑:我尝试过的代码:

    ABMultiValueRef phones = ABRecordCopyValue(contactPerson, kABPersonPhoneProperty);

                        for (NSUInteger j = 0; j < ABMultiValueGetCount(phones); j++) {

            NSMutableString *phone = [CFBridgingRelease(ABMultiValueCopyValueAtIndex(phones, j)) mutableCopy];
if ([phone hasPrefix:@"06"] || [phone hasPrefix:@"07"]){
    person.number = phone;
    }

但我不认为这是最好的选择..?

可能是这样的:

if (ABMultiValueRef hasprefix...06 ||  07){
person.number = phones
}

当联系人有多个电话号码值时,我可以使用ABMultiValueGetCount(phones)来计算。

好吧,现在举一个例子:

联系人«Peter»在ABAddressBookNSLog手机中有5个电话号码:

02 35 00 00 00

07 00 00 00 00

1(919)949-8234

06 00 00 00 00

9009498923

我想对这些数字进行排序,并且只在NSString中存储一个:

如果数字从07开始 - >接受。 (分配给NSString

如果号码以06开头 - >接受。 (分配给NSString

如果是其他号码 - >不要分配。

如果它们是两个电话号码:一个用06,一个用07,取最后一个在ABAddressBook注册(如果这不可能/太复杂,请从07开始)。

我想为ABAddressBook中的每个联系人制作此循环。并且每个联系人只有一个号码(如果号码不是从06或07开始,则为0)。

在我的例子中:

彼得得到这个号码:07 00 00 00 00

1 个答案:

答案 0 :(得分:1)

我发现自己的最佳答案:

ABMultiValueRef phones = ABRecordCopyValue(contactPerson, kABPersonPhoneProperty);
                            for (NSUInteger j = 0; j < ABMultiValueGetCount(phones); j++) 
{   
if ([CFBridgingRelease(ABMultiValueCopyValueAtIndex(phones, j)) hasPrefix:@"07"] 
|| [CFBridgingRelease(ABMultiValueCopyValueAtIndex(phones, j)) hasPrefix:@"06"] 
||[CFBridgingRelease(ABMultiValueCopyValueAtIndex(phones, j)) hasPrefix:@"+33"])
        {

}
}