Сортировать 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"])
{
}
}