Сортировать ABMultiValueRef(kABPersonPhoneProperty)

Ну, чтобы получить телефоны собственности с 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),

Хорошо, теперь возьмем пример:

Контакт "Питер" имеет 5 телефонных номеров в ABAddressBook (NSLog телефоны):

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, и каждый контакт имеет только ОДИН номер (или 0, если номера не начинаются с 06 или 07).

В моем примере:

Петр получил этот номер: 07 00 00 00 00

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"])
        {

}
}
Другие вопросы по тегам