Доступ Пользователи Контакты Номера телефонов CNContacts

Я пытаюсь получить номера телефонов своих контактов с помощью CNContact, я хочу, чтобы номер был в виде простой строки его цифр, таких как "04xxxxxxxx", но самое близкое, к чему я могу добраться, это следующее. ("контакт" имеет тип CNContact)

contact.phoneNumbers[0].value
\\Which prints: <CNPhoneNumber: 0x13560a550: countryCode=au, digits=04xxxxxxxx>

Я пробовал все очевидные вещи и не столь очевидные вещи, спасибо


person Blake Lockley    schedule 26.11.2015    source источник


Ответы (3)


Если у кого-то есть более законное решение, пожалуйста, опубликуйте его, иначе этот довольно хакерский подход работает:

let value = String(contact.phoneNumbers[0].value)

let start = value.rangeOfString("digits=")!.endIndex
let end = value.endIndex.predecessor()

let number = value.substringWithRange(Range<String.Index>(start: start, end: end))
person Blake Lockley    schedule 26.11.2015
comment
Ага, у меня тоже работает. Удивлен, что нет менее хакерского подхода. У Apple должен быть подкласс цифр! - person Lukesivi; 13.12.2015

Используя эту категорию, теперь вы можете получить доступ к номеру телефона через swift. не забудьте включить этот файл в заголовок моста

@implementation  CNPhoneNumber (SwiftSupport)
- (NSString*)toString {
    return self.stringValue;
}

@end
person Edward Ashak    schedule 17.12.2015

Получите числовое значение следующим образом:

let number = value.valueForKey("digits") as! String

Из iOS9:

let number = value.stringValue

Согласно документации Apple на CNPhoneNumber:

Свойство stringValue Строковое значение номера телефона. (только для чтения)

Декларация SWIFT var stringValue: String {get}

person Ri_    schedule 26.05.2016