Как изменить формат номера телефона в ABAddressBook?

Я делаю социальное приложение, и мне нужно реализовать ABAddressBook с именем и номером телефона. Я хотел бы отформатировать номер телефона, например: +33 6 01 23 45 67 становится 0601234567 (французский номер телефона). Итак, я хочу удалить пробелы и преобразовать +33 в 0

Некоторые номера телефонов не с пробелами, а некоторые с пробелами. Я не знаю почему. и номера, начинающиеся с +33 6, не сохраняются.

ABMultiValueRef phones = ABRecordCopyValue(contactPerson, kABPersonPhoneProperty);
for (NSUInteger j = 0; j < ABMultiValueGetCount(phones); j++) {

    NSMutableString *phone = [CFBridgingRelease(ABMultiValueCopyValueAtIndex(phones, j)) mutableCopy];

    [phone replaceOccurrencesOfString:@" "    withString:@""   options:0 range:NSMakeRange(0, phone.length)];
    [phone replaceOccurrencesOfString:@"("    withString:@""   options:0 range:NSMakeRange(0, phone.length)];
    [phone replaceOccurrencesOfString:@")"    withString:@""   options:0 range:NSMakeRange(0, phone.length)];
    [phone replaceOccurrencesOfString:@"-"    withString:@""   options:0 range:NSMakeRange(0, phone.length)];
    [phone replaceOccurrencesOfString:@"+33" withString:@"0" options:0 range:NSMakeRange(0, phone.length)];
    [phone stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

    if (((j == 0) && [phone hasPrefix:@"06"]) || ((j == 0) && [phone hasPrefix:@"07"]))     person.mainNumber   = phone;
    else if ((j==1) && [phone hasPrefix:@"06"])  person.mainNumber = phone;
    else if ((j==2) && [phone hasPrefix:@"06"])  person.mainNumber = phone;
    else if ((j==3) && [phone hasPrefix:@"06"])  person.mainNumber = phone;
}
CFRelease(phones);

person Vjardel    schedule 29.08.2015    source источник


Ответы (1)


Взгляните на решение Google https://github.com/googlei18n/libphonenumber.

Как ни странно, насколько мне известно, в Cocoa нет общедоступного форматирования телефона.

person Sash Zats    schedule 30.08.2015